2016-03-20 14 views
1

Ich habe gerade App zum Lesen von Ganzzahlen aus Datei in Set erstellt, und ich habe eine Frage, wenn ich in meiner Eingabedatei Nummern -5 5 2 8 9 1 4 55 habe 70, speichert es die Zahlen in Set this way- [1, 2, 4, 5, 70, 55, 8, 9], warum ist es so? Ich will, dass es Doppelzüngigkeit vermeidet - das ist OK, aber ich möchte die Zahlen zuerst speichern.Lesen und Schreiben von Ganzzahlen von/in Datei in Java

Set<Integer> zoznam = new HashSet(); 
    int index = 0; 
    FileReader fr; 
    fr = new FileReader(fileName); 
    String line; 
    BufferedReader br = new BufferedReader(fr); 
    int i = 0; 

    while ((line = br.readLine()) != null) { 

     System.out.println(line); 
     String[] items = line.split(" "); 
     int[] c = new int[items.length]; 
     for (int q = 0; q < items.length; q++) { 
      c[q] = Integer.parseInt(items[q]); 
      zoznam.add(c[q]); 
     } 
    } 
    return zoznam; 
} 

Antwort

1

Eine Set, im Allgemeinen, garantiert keine Reihenfolge. Wenn Sie die Reihenfolge beibehalten möchten, müssen Sie eine spezialisierte Implementierung verwenden, z. B. LinkedHashSet, die Reihenfolge der Einfügung wird beibehalten.

+0

Danke Kumpel !! Es hat mir sehr geholfen – Patrikz64

+0

Oder ein 'TreeSet', nein? –

+0

@DebosmitRay 'TreeSet' ist ein' SortedSet' - es sortiert die eingefügten Objekte und zeigt sie entsprechend ihrer natürlichen Reihenfolge an. Für den Input des OP (5 5 2 8 9 1 4 55 70) würde der Output 1 2 4 5 8 9 55 70 sein. Ein 'LinkedHashSet' hingegen behält die Reihenfolge des Einfügens bei. – Mureinik