Meine Set
ist manchmal sortiert, und manchmal nicht. HierVerarbeitet HashSet den Sortierjob intern?
ist das Beispiel:
public class SetOfInteger {
public static void main(String[] args) {
Random rand = new Random(47);
Set<Integer> intset = new HashSet<>();
for (int i = 0; i < 10; i++) {
int j = rand.nextInt(30);
System.out.print(j + " ");
intset.add(j);
}
System.out.println();
System.out.println(intset);
}
}
Das Ergebnis zeigt, dass die set
nicht sortiert ist.
8 5 13 11 1 29 28 20 12 7
[1, 20, 5, 7, 8, 11, 12, 29, 28, 13]
Wenn ich die Kündigung Ausdruck i < 20
in der for-Anweisung zu ändern, zeigt das Ergebnis, dass die set
sortiert werden.
8 5 13 11 1 29 28 20 12 7 18 18 21 19 29 28 28 1 20 28
[1, 5, 7, 8, 11, 12, 13, 19, 18, 21, 20, 29, 28]
Es ist so seltsam, oder? Ich weiß einfach nicht, wie ich es erklären soll, und ich brauche Hilfe, vielen Dank.
Fügen Sie Ihren Code hier, anstelle von Bildern – Andrew
Ein 'HashSet' ist durch den' hashCode' seiner Elemente angeordnet. Es ist sehr unwahrscheinlich, dass sie sortiert werden. Ein 'LinkedHashSet' behält die Reihenfolge der Einfügung bei, ** und ** ein' TreeSet' ist geordnet. –
Nein. Bild des Textes hier nicht posten. Veröffentlichen Sie den Text. – EJP