Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Java] Collections.sort(ArrayList<String>)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Bij het sorteren van een list van Strings met behulp van Collections.sort verdwijnen ongewild de duplicates uit de lijst. De lijst is van het type ArrayList<String>.

Ik gegoogled op het probleem en testen gedaan met een implementatie van Comparable (dus met het sorteren van een eigen type) maar heb de indruk dat ik het veel te ver aan het zoeken ben.

Ik ben op de hoogte van de standaardverwijdering van duplicates in Sets, maar het gaat hier zeker om lijsten, iemand een idee? Veel dank.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:36
Heb je een testcase, want bij mij gebeurt dat niet in Java 6.0:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
        ArrayList<String> list = new ArrayList<String>();
        
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("b");
        list.add("d");
        list.add("b");
        list.add("c");
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);


Text output:
1
2
[a, b, c, b, d, b, c]
[a, b, b, b, c, c, d]


code:
1
2
3
4
jaapjan@frodo:~$ java -version
java version "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b08)
OpenJDK 64-Bit Server VM (build 1.6.0-b08, mixed mode)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
Mijn huidige testcase is onmogelijk even weer te geven, want zit erg diep (de constructie van namelist), maar de testcode die de output genereert is gewoon

Java:
1
2
3
    System.out.println(nameList);
    Collections.sort(nameList);
    System.out.println(nameList);


Text output:
1
2
3
 
[Water, My Gin, Water]
[My Gin, Water]


Het is me een compleet raadsel, maar ik had natuurlijk ff opnieuw moeten vanaf de pure basix zoals je me voordeed... die basix geven bij mij overigens hetzelfde resultaat, ik debug dus verder, en deze specifieke vraag geldt natuurlijk niet meer, dank & groeten

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Wat zeggen de volgende regels bij jou?
Java:
1
2
System.out.println(nameList.getClass());
System.out.println(nameList.get(0).getClass());


edit:
Uhm, wilde je met je laatste woorden zeggen dat jouw probleem niet meer voordoet en dus al is opgelost?

[ Voor 28% gewijzigd door BalusC op 13-04-2008 14:02 ]