我处于扩展LinkedList并实现Set的位置,因此我有一个没有重复的列表.我想知道这样的实现是否已经存在?
我打算做的就是覆盖add(e)方法以首先查找元素,如果存在则不添加它.就像是:
add(E){
if(get(E) == null) super.add(E);
}
Run Code Online (Sandbox Code Playgroud)
标准集合中不存在Java实现.
但是,您可以查看Common Collections中的SetUniqueList,它可能与您要查找的内容类似.
也许LinkedHashSet做你想要的.它将元素保留在(默认情况下)插入顺序中.
不可能同时实现两个接口(至少如果要遵循List和Set的规范),因为hashCode定义冲突.
返回此列表的哈希码值.列表的哈希码被定义为以下计算的结果:
hashCode = 1;
Iterator i = list.iterator();
while (i.hasNext()) {
Object obj = i.next();
hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
}
Run Code Online (Sandbox Code Playgroud)
与
返回此set的哈希码值.集合的哈希码被定义为集合中元素的哈希码的总和,其中空元素的哈希码被定义为零.这确保了s1.equals(s2)意味着对于任何两个集合s1和s2的s1.hashCode()== s2.hashCode(),这是Object.hashCode方法的常规协定所要求的.
| 归档时间: |
|
| 查看次数: |
3571 次 |
| 最近记录: |