IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Seřazení ArrayList podle stringu

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
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.