java HashSet應用
阿新 • • 發佈:2019-02-07
在使用HashSet時,應注意:一、自己的類有屬性,就應當重寫方法equals和hashCode;二、寫方法時要遵守的原則,兩個類equals返回true時,hashCode一定相等(考慮一下雜湊表的衝突就可以理解);三、在使用時不得隨意修改HashSet中的值,否定將會導致結果不準確性。
import java.util.*; class R { public int count; public R (int count) { this.count = count; } public String toString() { return "R(count " + count + " )"; } public boolean equals(Object obj) { if(obj instanceof R) { R r = (R)obj; if( r.count == this.count) return true; } return false; } public int hashCode() { return this.count; } } public class TestHashSet { public static void main(String[] args) { HashSet hs = new HashSet(); hs.add(new R(5)); hs.add(new R(-3)); hs.add(new R(9)); hs.add(new R(-2)); System.out.println(hs); Iterator it = hs.iterator(); R first = (R)it.next(); first.count = -3;//直接改變,最好先刪除再插入 System.out.println(hs); hs.remove(new R(-3));//只查詢到了原先的-3 System.out.println(hs); System.out.println("has -3 " + hs.contains(new R(-3)));//false System.out.println("has -5 " + hs.contains(new R(-5)));//false } }