Sortowanie Arraylist po dlugosci slowa

0

Czesc,
mam plik w ktorym jeden wiersz to nazwisko i imie oddzielone spacją. Ten plik wczytują do ArrayList a nastepnie sortuje pod względem długości nazwiska. I z tym ostatnim mam problem,myślalem że ten comparator ktory napisala zadziala, ale on sortuje tylko alfabetycznie ;/ Użyłem metody split zeby oddzielic nazwisko od imienia a nastepnie porownac same nazwiska

public class Main {

    public static void main(String[] args) throws IOException {

        Scanner odczyt=new Scanner(Paths.get("studenci.txt"));

        ArrayList<String> lista = new ArrayList<String>();
        while( odczyt.hasNextLine() )
        {
         lista.add(odczyt.nextLine());

        }
        Collections.sort(lista, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                String[] podziel=o1.split(" ");
                String p1=podziel[0];
                String[] podziel2=o1.split(" ");
                String p2=podziel2[0];
                if(p1.length()>p2.length())
                   return String.valueOf(o1).compareTo(o2);
                else
                    return String.valueOf(o2).compareTo(o1);
            }
        } );

        for(String x:lista)
            System.out.println(x);
    }
}

Szukam rady jak to poprawic zeby sortowalo po dlugosci nazwiska :)

3

Twój comparator to jakaś wyższa forma katastrofy. Alfabetycznie to on też nie sortuje raczej.

a wystarczy:

new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.indexOf(' ') - o2.indexOf(' ');
        } 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0