LinkedHashSet-插入顺序和重复项-保持最新状态为“最重要”
我需要一个保持插入顺序并具有唯一值的集合。LinkedHashSet看起来很可行,但是存在一个问题-
当两个项目相等时,它将删除最新的项目(这很有意义),下面是一个示例:
set.add("one");set.add("two");
set.add("three");
set.add("two");
该LinkedHashSet
会打印:
one
,two
,three
但是我需要的是:
什么是最好的解决方案?是否有任何可以执行此操作的收集/收集方法,还是应该手动实现?
回答:
大多数Java集合都可以扩展以进行调整。
子类LinkedHashSet
,重写add
方法。
class TweakedHashSet<T> extends LinkedHashSet<T> { @Override
public boolean add(T e) {
// Get rid of old one.
boolean wasThere = remove(e);
// Add it.
super.add(e);
// Contract is "true if this set did not already contain the specified element"
return !wasThere;
}
}
以上是 LinkedHashSet-插入顺序和重复项-保持最新状态为“最重要” 的全部内容, 来源链接: utcz.com/qa/416424.html