[JAVA] Utilisons Set more [Collections Framework]

Java utilise ArrayList au lieu de tableaux. Hmm Pour les personnes ayant beaucoup de connaissances

Je veux avoir une valeur sans duplication


List<String> list = new ArrayList<String>();

~ Traitement divers ~

String itemNo = get〇〇

if(list.contains(itemNo)){//Ne dupliquez pas les valeurs
  list.add(itemNo);
}

Vous devez utiliser l'ensemble des collections au lieu d'écrire la logique de suppression des doublons

Set est une collection sans éléments en double Equals est utilisé pour empêcher plus d'une instance de la même valeur.

Au fait, le nom Set est la version anglaise de la théorie des ensembles "set" (probablement). Puisque l'ensemble n'autorise pas les éléments dupliqués (ensemble de nombres naturels, etc.)

Je veux avoir une valeur sans duplication


Set<String> set = new HashSet<String>();

~ Traitement divers ~

String itemNo = get〇〇

//↓ La déduplication est égale()Pas besoin de décrire car set le fera en utilisant
//if(list.contains(itemNo)){//Ne dupliquez pas les valeurs
set.add(itemNo);
//}

Facile à écrire et facile à lire et facile à comprendre avec quelques descriptions En utilisant Set en premier lieu, il peut être clairement indiqué qu'il n'y a pas de duplication.

Sera-ce tard?

Mesure réelle

la mesure


		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 ~ Omis ~ set time :5471075 [0, 1, 2, 3, 4, 5 ~ Omis ~ // * Il se trouve être dans l'ordre décroissant, mais l'ordre n'est pas garanti.

La différence était presque le double. Je l'ai vérifié plusieurs fois, mais la différence est d'environ 1,2 à 3 fois, et Set est plus rapide. Cependant, ce que je veux dire ici, ce n'est pas de l'utiliser pour accélérer, Vous n'avez pas à vous soucier de la dégradation des performances et n'utilisez pas Set.

Recommended Posts

Utilisons Set more [Collections Framework]
Utilisons jcmd
[Swift] Utilisons l'extension
[Swift] Utilisons le contrôle segmenté
[RSpec] Utilisons FactoryBot [Rails]
[spring] Utilisons Spring Data JPA
Notes de révision de Java Collections Framework
Comment définir et utiliser un profil avec une configuration basée sur des annotations dans le framework Spring