Java 具有 set() 方法和 O(1) Contains() 的数据结构

Java data structure with a set() method and O(1) Contains()

Java 中是否存在可以替换特定索引处的项目并且还具有 O(1) 时间复杂度的 contains 方法的有序数据结构?

LinkedHashSet 几乎就是我要找的东西,但您不能 set/replace 索引中的项目使用它们。

不在标准 Java class 中。您可以很容易地创建一个 class,它包含一个 HashSet 和一个 ArrayList

您可以将项目存储在 ArrayList 中,并使用 HashMap<ItemType, Integer> 从元素类型映射到 List 中等价的元素数量 类 ] 允许使用列表访问元素并允许您测试是否包含使用

的项目
Integer i = map.get(object);
boolean contained = ( i != null ) && ( i > 0 );

正在更新地图以添加元素:

map.merge(object, 1, Integer::sum);

删除一个元素:

map.computeIfPresent(object, (k, v) -> v > 1 ? v - 1 : null);

如果一个项目在列表中被替换,你可以处理为

map.merge(newValue, 1, Integer::sum);
map.computeIfPresent(oldValue, (k, v) -> v > 1 ? v - 1 : null);