[JAVA] Verwenden wir Set more [Collections Framework]

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);
}

Sie sollten den Satz von Sammlungen verwenden, anstatt eine Logik zum Entfernen von Duplikaten zu schreiben

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.

Wird es spät sein?

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

Verwenden wir Set more [Collections Framework]
Verwenden wir jcmd
[Swift] Verwenden wir die Erweiterung
[Swift] Verwenden wir die segmentierte Steuerung
[RSpec] Verwenden wir FactoryBot [Rails]
[spring] Verwenden wir Spring Data JPA
Überprüfungshinweise zum Java Collections Framework
So legen Sie ein Profil mit annotationsbasierter Konfiguration im Spring-Framework fest und verwenden es