一.概述
Hashset的Set的实现类,底部是通过Hash函数来指向地址,Hashset只能存储唯一值,需要实现HashCode和Equals方法来
判断其唯一性,可以存储null值,取值不能保证其顺序
LinkedHashSet是HashSet的子类,它和HashSet不同之处在于存储在Hash表中的元素,其元素是通过链表的方式维护其插入顺序的
二.举例
class AllApp{
private String packageName;
private boolean systemApp;
@Override
public int hashCode() {
return packageName.hashCode()*2+(systemApp?1:0);
}
@Override
public boolean equals( Object obj) {
if (obj != null && obj instanceof AllApp) {
AllApp otherApp = (AllApp) obj;
if (this.packageName.equals(otherApp.packageName)&&this.systemApp == otherApp.systemApp) {
return true;
}
}
return false;
}
}
三.源码解析
底部是HashMap实现的
本文深入探讨了HashSet和LinkedHashSet的实现原理,包括Hashset如何通过Hash函数存储唯一值,以及LinkedHashSet如何保持元素的插入顺序。同时,通过具体代码示例展示了如何实现HashCode和Equals方法确保对象的唯一性。
3187

被折叠的 条评论
为什么被折叠?



