Sorting a List<List<String>>

DooPexXx

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.

Emanuel Trandafir

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.

edited at
0

Comments

0 comments
Login to comment

Related