Die Methode zum Anpassen des Gewichts von Set

Beurteilungsreihenfolge: HashSet wird zuerst beurteilen, ob es ein Objekt mit demselben Hashcode gemäß dem Hashcode der Zielklasse gibt, wenn add ausgeführt wird, und wenn ja, verwenden Sie equals, um zu beurteilen, ob es dasselbe Objekt ist.

Der Standardwert equals vergleicht den Adresswert.
Beim Überschreiben der equals-Methode muss die hashCode-Methode überschrieben werden.

Beispiel: Wir möchten nur anhand der ID feststellen, ob es sich um denselben Schüler handelt, dh Schüler mit derselben ID können nicht in der Menge auftauchen.

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

public class Main {
    
    

	public static void main(String[] args) {
    
    
		Set<Stu> set = new HashSet<>();
		for (int i = 1; i <= 5; i++) {
    
    
			set.add(new Stu(i));
		}
		for (int i = 1; i <= 3; i++) {
    
    
			set.add(new Stu(i));
		}
		System.out.println(set.toString());
	}
}

class Stu {
    
    
	int id;
	String name;
	
	public Stu(int id) {
    
    
		this.id = id;
	}
	
	public String toString() {
    
    
		return "编号:" + this.id;
	}
	/*
	@Override    必须带上重写符号
	public int hashCode() {
		return this.id;
	}
	@Override
	public boolean equals(Object s) {//必须是Object类
		Stu ss = (Stu)s;//转为Stu类
		return this.id == ss.id;
	}
	*/
}

Laufendes Ergebnis:
Bildbeschreibung hier einfügen
nach Entfernen des Kommentars:
Bildbeschreibung hier einfügen

Ich denke du magst

Origin blog.csdn.net/QinLaoDeMaChu/article/details/111149815
Empfohlen
Rangfolge