Portál AbcLinuxu, 13. května 2025 23:17

Dotaz: Java - serazeni ArrayList

14.8.2009 14:48 Ondrej Dudlacky
Java - serazeni ArrayList
Přečteno: 3505×
Odpovědět | Admin

Zdravim, mam jeden mensi dotaz, protoze me to prave zaskocilo:

public static void main(String[] args)
    {
        ArrayList String  myList = new ArrayList String ();

        myList.add("abc");
        myList.add("linux");
        myList.add("java");
        myList.add("ABC");
        myList.add("Linux");
        myList.add("Java");

        Collections.sort(myList);

        for (String element : myList)
            System.out.println(element);
    }

Vypise

ABC
Java
Linux
abc
java
linux

Co musim udelat, aby byl vypis (podle me) logicky takto:

abc
ABC
java
linux
Linux
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.8.2009 15:04 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pouzit java.utils.Collections.sort() so spravnym komparatorom; defaultny da asi ine poradie ako chces.
14.8.2009 15:26 Ondrej Dudlacky
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList

A existuje kompatarator, ktery to seradi tak jak jsem psal nebo si ho musim naprogramovat?

14.8.2009 15:19 Samuel | skóre: 19 | Bratislava
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList
Odpovědět | | Sbalit | Link | Blokovat | Admin

http://www.google.com/search?q=collections%20sort%20locale

14.8.2009 15:32 Ondrej Dudlacky
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList

S locate to podle me nema nic spolecneho nebo se pletu?

14.8.2009 18:20 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList

To teda má, zkuste s různými locale a třeba některé bude logické :):):)

  Collator collator = Collator.getInstance (Locale.US); //nebo jiné Locale třeba české
  Collections.sort(myList,collattor);
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
14.8.2009 15:34 Ondrej Dudlacky
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jeste bych k tomu pripojil tento dotaz: Proc je razeni retezcu implicitne nastaveno takto? Nezda se vam to divne?

14.8.2009 18:01 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList

Nezdá :)
Třeba proto
... a třeba taky zmiňované LOCALE
Logicky je jako jak ?, dle čeho ? :)
dovoluji upozornit, že požadované není ani zaručeně české řazení

abc
ABC
java
linux
Linux

 nebo

ABC
abc
java
Linux
linux

Je obojí správně abecedně seřazen česky a to nemluvě až narazíte na to že znaky č,ř,š,ž jsou považovány za základní.
Nevím jestli následující je to logicky, ale je to česky :)

cepem
čepem
cepín

WOW :)

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
14.8.2009 18:03 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList
List ma definovane poradie, nie vsak zoradenie. Nic nie je divne, implementacia je v sulade s dokumentaciou a dokumentacia toto definuje, IIRC.
14.8.2009 18:11 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList

Šoupák! :) je tam

Collections.sort(myList);
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
14.8.2009 18:20 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList
Aha, jemu sa vidi divne zoradenie "ABCabc" po pouziti defaultneho comparatora, nie "insertion order". No, na to by sa dalo odpovedat man ascii. Je to akasi "Non-OOP Inheritance". :-D
14.8.2009 18:46 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Java - serazeni ArrayList
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud nedodáte vlastní komparátor, porovnávají se řetězce podle hodnoty znaků Unicode. Pokud chcete použít abecední řazení dle locale, použijte java.text.Collator .

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.