JAVA ------ Ensemble de collection

L'ensemble hérite de la collection

Définir les fonctionnalités:

  1. Ne contient pas de collection d'éléments répétitifs
  2. Il n'y a pas de méthode avec index, donc vous ne pouvez pas utiliser la boucle for ordinaire pour traverser
  3. HashSet: Aucune garantie n'est faite sur l'ordre des itérations de collecte

Exemple:

package Set;

import java.util.HashSet;
import java.util.Set;

public class SetDemo01 {
    
    
	public static void main(String[] args) {
    
    
		
		Set<String> set=new HashSet<String>();
		
		set.add("hello");
		set.add("world");
		set.add("java");
		set.add("world");
		
		//增强for遍历
		for(String s:set) {
    
    
			System.out.println(s);
		}	
		System.out.println(set);	
	}
}


Table de hachage :

  • Avant JDK8, la couche inférieure était implémentée avec un tableau et une liste liée
  • Après JDK8, lorsque la longueur est plus longue, la couche inférieure est optimisée
  • Méthode de construction par défaut de HashSet: créer un nouvel ensemble vide, la capacité initiale par défaut est de 16

Lors du stockage d'une table de hachage, commencez par calculer une valeur de hachage en tant qu'index. Pour les éléments ayant le même index, vérifiez d'abord si la valeur de hachage est la même et stockez la différence. S'il en est de même, cela dépend du contenu de l'élément est le même. Si l'élément n'est pas le même, il est stocké. Indique qu'il existe déjà et ne sera plus déposé.

Insérez la description de l'image ici


Valeur de hachage: la valeur de type int calculée par le JDK en fonction de l'adresse ou de la chaîne ou du numéro de l'objet

  • Public int hasCode () dans la classe Object: retourne la valeur de hachage de l'objet

Caractéristiques de la valeur de hachage:

  1. La valeur de hachage retournée en appelant la méthode hasCode () plusieurs fois pour le même objet est la même
  2. Par défaut, différents objets ont des valeurs de hachage différentes. Grâce à la réécriture de méthode, vous pouvez obtenir la même valeur de hachage pour différents objets.
  3. La chaîne réécrit la méthode hashCode

Exemple:

Catégorie étudiante:

package Set;

public class student {
    
    
	private String name;
	private int age;
	
	//构造方法
	public student() {
    
    
		System.out.println("无参构造");
	}
	
	public student(String name,int age) {
    
    
		this.name=name;
		this.age=age;
	}
	
	//提供get/set方法
	public void setAge(int age) {
    
    
		if(age<0||age>100)
		{
    
    
			System.out.println("年龄有误");
		}else {
    
    
			this.age=age;
		}
		
	}
	
	public int getAge() {
    
    
		return age;
	}
	
	public void setName(String name) {
    
    
		this.name=name;
	}
	
	public String getName() {
    
    
		return name;
	}
	
	public void show() {
    
    
		System.out.println(name+","+age);
	}

}

principale:

package Set;

import java.util.HashSet;
import java.util.Set;

public class SetDemo02 {
    
    
	public static void main(String[] args) {
    
    
		
		student s1=new student("小李",20);
		student s2=new student("小李",20);
		student s3=new student("小张",40);
		
		//同一个对象多次调用hasCode()方法返回的哈希值相同
		System.out.println(s1.hashCode());
		System.out.println(s1.hashCode());
		//默认情况下,不同对象哈希值不同
		//通过方法重写,可以实现不同对象的哈希值相同
		System.out.println(s2.hashCode());
		System.out.println("-------");
		
		System.out.println("hello".hashCode());
		System.out.println("world".hashCode());
		System.out.println("hello".hashCode());
		System.out.println("-------");
		
		//字符串重写了hashCode方法
		System.out.println("你好".hashCode());
		System.out.println("晚安".hashCode());
		
		
	}
}


Caractéristiques de HashSet:

  • HashSet implémente l'interface Set
  • La structure de données sous-jacente est une table de hachage
  • Aucune garantie n'est faite pour la séquence de l'itération de collection, et l'ordre des éléments stockés et récupérés n'est pas garanti d'être le même
  • Il n'y a pas de méthode avec index, donc vous ne pouvez pas utiliser la boucle for ordinaire pour traverser
  • Ne contient pas d'éléments répétés

Exemple:

package Set;

import java.util.HashSet;

public class HashSetDemo {
    
    
	public static void main(String[] args) {
    
    
		HashSet<String> hs=new HashSet<>();
		
		hs.add("hello");
		hs.add("world");
		hs.add("java");
		
		for(String s:hs) {
    
    
			System.out.println(s);
		}
	}

}


Caractéristiques LinkedHashSet:

  • L'interface Set implémentée par la table de hachage et la liste chaînée a un ordre d'itération prévisible
  • L'ordre est garanti par la liste chaînée, et l'ordre de stockage et de récupération des éléments est le même
  • L'élément est garanti unique par la table de hachage et il n'y a pas d'éléments en double

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45102820/article/details/113446085
conseillé
Classement