Java verwendet ArrayList anstelle von Arrays. Hmm Für Leute mit viel Wissen
Ich möchte einen Wert ohne Duplizierung haben
List<String> list = new ArrayList<String>();
~ Verschiedene Verarbeitung ~
String itemNo = get〇〇
if(list.contains(itemNo)){//Werte nicht duplizieren
list.add(itemNo);
}
Set ist eine Sammlung ohne doppelte Elemente Equals wird verwendet, um mehr als eine Instanz desselben Werts zu verhindern.
Der Name Set ist übrigens die englische Version der Mengenlehre "set" (wahrscheinlich). Da die Menge keine doppelten Elemente zulässt (Menge natürlicher Zahlen usw.)
Ich möchte einen Wert ohne Duplizierung haben
Set<String> set = new HashSet<String>();
~ Verschiedene Verarbeitung ~
String itemNo = get〇〇
//↓ Die Deduplizierung ist gleich()Keine Notwendigkeit zu beschreiben, da set es mit tun wird
//if(list.contains(itemNo)){//Werte nicht duplizieren
set.add(itemNo);
//}
Leicht zu schreiben und leicht zu lesen und leicht zu verstehen mit wenigen Beschreibungen Durch die erstmalige Verwendung von Set kann eindeutig festgestellt werden, dass keine Duplizierung vorliegt.
Tatsächliche Messung
Messung
List<Integer> list = new ArrayList<>();
Long start = System.nanoTime();
for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
Integer num= i+j;
if(!list.contains(num)){
list.add(num);
}
}
}
Long end = System.nanoTime();
System.out.println("list time:"+ String.valueOf(end - start));
System.out.println(list);
Set<Integer> set = new HashSet<>();
Long start2 = System.nanoTime();
for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
Integer num= i+j;
set.add(num);
}
}
Long end2 = System.nanoTime();
System.out.println("set time :"+String.valueOf(end2 - start2));
System.out.println(set);
list time:10748381 [0, 1, 2, 3, 4, 5 ~ weggelassen ~ set time :5471075 [0, 1, 2, 3, 4, 5 ~ Ausgelassen ~ // * Es ist zufällig in absteigender Reihenfolge, aber die Reihenfolge ist nicht garantiert.
Der Unterschied war fast doppelt so hoch. Ich habe es mehrmals überprüft, aber der Unterschied beträgt ungefähr 1,2 bis 3 Mal, und Set ist schneller. Was ich hier jedoch sagen möchte, ist, es nicht zum Beschleunigen zu verwenden. Sie müssen sich keine Gedanken über Leistungseinbußen machen und verwenden Set nicht.
Recommended Posts