是否存在这样的Java数据结构:
- 不允许复制
- 保留插入顺序
- 允许在集合的开始或结束时删除和插入
有LinkedHashSet
,但它只允许remove(object)
, add(object)
,因为Set
。
LinkedHashSet将允许删除第一个元素,只需执行
Iterator iter = linkedHashSet.iterator();
if(iter.next()) {
iter.remove();
}
从Java 21开始,LinkedHashSet
满足规定的要求。
LinkedHashSet
被更新为具有addFirst
, addLast
, removeFirst
和removeLast
方法。当与LinkedHashSet
的现有功能相结合时,这满足了所述的需求。
如果您愿意为了无重复而放弃一点性能,您可以扩展ArrayDeque
并覆盖所有插入到集合中的方法,以查看该元素是否已经存在。