寻找具有这些属性的数据结构:
Array
)。HashSet
)。E remove(int i)
中的ArrayList
)。是否有这样的数据结构?或者我需要自己实施?
答案 0 :(得分:2)
也许是一个T []
和HashSet<T>
的课程。如果HashSet
包含要添加的元素,则它是重复的。如果T []
具有非null(或您标记的任何内容),则该元素将被占用。要删除,您需要从两个数据结构中删除。可以通过T []
来限制大小。
这样,所有4个操作都是O(1)
时间。
答案 1 :(得分:1)
您可以使用Arrays.asList
:
list.set(i, null)
list.contains(element)
检查列表中是否包含元素。这将线性检查内容;我假设列表非常小,所以在实践中这很好。例如:
List<Integer> ints = Arrays.asList(new Integer[5]);
// Unset the value in the second slot, if it is non-null.
if (ints.get(2) != null) {
ints.set(2, null);
}
// Add 123 to the first slot which is null.
if (!ints.contains(123)) {
ints.set(ints.indexOf(null), 123);
}