NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Seřazení ArrayList podle stringu

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Martin
Člen
Avatar
Martin:15.1.2018 13:12

Ahoj,
potřeboval bych poradit jak seřadit něco takového:

public class UserListPar {
    private String userID;
    private String userName;
    private String userGroupID;
    private String userNumber;

    public UserListPar(String userID, String userName, String userNumber, String userGroupID){
        this.userID = userID;
        this.userName = userName;
        this.userNumber = userNumber;
        this.userGroupID = userGroupID;

    }
        //a tak dále get a set
}

Vytvořím a naplním:

ArrayList<UserListPar> listUser = new ArrayList<UserListPar>();

        do
        {
            listUser.add(new UserListPar(dataCursor.getString(0), dataCursor.getString(1), dataCursor.getString(2), dataCursor.getString(3)));
        }while (dataCursor.moveToNext());

Dřív jsem používal tento kód ale ten u stringu nefunguje a hlásí chybu:

Collections.sort(listUser, new Comparator<UserListPar>(){
    public int compare(UserListPar obj1, UserListPar obj2)
    {
        return (obj1.getUserName() < obj2.getUserName()) ? -1: (obj1.getUserName() > obj2.getUserName()) ? 1:0 ;
    }
});
 
Odpovědět
15.1.2018 13:12
Avatar
Martin
Člen
Avatar
Martin:15.1.2018 13:42

Už jsem našel, omlouvám se.

Collections.sort(listUser, new Comparator<UserListPar>() {
    @Override
    public int compare(UserListPar item, UserListPar t1) {
        String s1 = item.getUserName();
        String s2 = t1.getUserName();
        return s1.compareToIgnoreCase(s2);
    }
});
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
15.1.2018 13:42
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:15.1.2018 13:45
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import java.text.Collator;

public class Test
{
    public Test() {
        List<String> letters = new ArrayList<>();
        letters.add("B");
        letters.add("C");
        letters.add("A");
        Collections.sort(letters, Collator.getInstance());
        System.out.println(letters);
    }
}
Nahoru Odpovědět
15.1.2018 13:45
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Martin
gcx11:15.1.2018 15:40

Verze s lambda funkcí (Java 8+)

Collections.sort(listUser, (x, y) -> x.getUserName().compareToIgnoreCase(y.getUserName()));
 
Nahoru Odpovědět
+3
15.1.2018 15:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.