I'm trying to sort a List with Collection.sort.
I'm searching for an approach to sort the values "0.782311" , "0.45614" descendant.
package example.jdbc.movies;
import java.util.ArrayList;
import java.util.List;
/**
* This class is used get links from HTML using Jsoup.
* @author w3spoint
*/
public class Mitarbeiter {
private static String mitarbeitername ="";
private static String mitarbeiterguid = "";
private static int mitarbeiteralter = 0;
static List<Mitarbeiter> MitarbeiterList = new ArrayList<>();
public Mitarbeiter(String Name,String GUID,int Alter)
{
this.mitarbeitername = Name;
this.mitarbeiterguid = GUID;
this.mitarbeiteralter =Alter;
}
public String getMitarbeitername()
{
return this.mitarbeitername;
}
public String getGUID()
{
return this.mitarbeiterguid;
}
public int getAlter()
{
return this.mitarbeiteralter;
}
public void setMitarbeitername(String Name)
{
this.mitarbeitername = Name;
}
public void setGUID(String guid)
{
this.mitarbeiterguid = guid;
}
public void setAlter(int Alter)
{
this.mitarbeiteralter = Alter;
}
public static void main(String args[]){
List<List<String>> Mitarbeiterdb = new ArrayList<List<String>>();
Mitarbeiterdb.add(new ArrayList<String>());
Mitarbeiterdb.get(0).add( "Fischer");
Mitarbeiterdb.get(0).add( "0815");
Mitarbeiterdb.get(0).add( "0.782311");
Mitarbeiterdb.add(new ArrayList<String>());
Mitarbeiterdb.get(1).add( "Schulze");
Mitarbeiterdb.get(1).add( "0817");
Mitarbeiterdb.get(1).add( "0.124665");
Mitarbeiterdb.add(new ArrayList<String>());
Mitarbeiterdb.get(2).add( "Wagner");
Mitarbeiterdb.get(2).add( "2133");
Mitarbeiterdb.get(2).add("0.45614");
System.out.println(Mitarbeiterdb.get(1).get(0));
// Collections.sort(Mitarbeiterdb, Comparator.comparing(item->Mitarbeiterdb.indexOf(item)));
int cntMitDB = 0;
/*do {
Arrays.sort((Double)Mitarbeiterdb.get(cntMitDB));
cntMitDB = cntMitDB +1;
}while(cntMitDB < Mitarbeiterdb.size());*/
}
}
I tried to sort in a Loop.
You can define a comparator that looks for the double field in the inner list:
// TODO: add a better name here
Comparator<List<String>> compareByDoubleDescending = Comparator.<List<String>>comparingDouble(
innerList -> Double.parseDouble(innerList.get(2))).reversed();
Then you can use stream().sorted(...).toList()
that will create a new, sorted list instead of altering the one you have:
List<List<String>> sorted = Mitarbeiterdb.stream()
.sorted(compareByDoubleDescending)
.toList();
System.out.println(sorted);
Or you can use Collections.sort
, as you mention. This will modify the current collection:
Collections.sort(Mitarbeiterdb, compareByDoubleDescending);
System.out.println(Mitarbeiterdb);
PS: I would also encourage you to use an object instead of the inner list. Instead of this:
Mitarbeiterdb.get(0).add( "Fischer");
Mitarbeiterdb.get(0).add( "0815");
Mitarbeiterdb.get(0).add( "0.782311");
it will be much safer and clean to use something like this:
Mitarbeiterdb.add(new Player("Fischer", "0815", "0.782311"));
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments