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);
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);