LinkedHashSet-插入顺序和重复项-保持最新状态为“最重要”

我需要一个保持插入顺序并具有唯一值的集合。LinkedHashSet看起来很可行,但是存在一个问题-

当两个项目相等时,它将删除最新的项目(这很有意义),下面是一个示例:

set.add("one");

set.add("two");

set.add("three");

set.add("two");

LinkedHashSet会打印:

onetwothree

但是我需要的是:

什么是最好的解决方案?是否有任何可以执行此操作的收集/收集方法,还是应该手动实现?

回答:

大多数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

回到顶部