寻找数据结构

时间:2016-08-08 20:32:24

标签: java data-structures

寻找具有这些属性的数据结构:

  1. 固定尺寸​​(如Array)。
  2. 不能包含相同的元素(例如HashSet)。
  3. 能够从任何位置移除元素(例如E remove(int i)中的ArrayList)。
  4. 将元素设置在任何位置,但仅当它为空时,否则抛出异常。
  5. 是否有这样的数据结构?或者我需要自己实施?

2 个答案:

答案 0 :(得分:2)

也许是一个T []HashSet<T>的课程。如果HashSet包含要添加的元素,则它是重复的。如果T []具有非null(或您标记的任何内容),则该元素将被占用。要删除,您需要从两个数据结构中删除。可以通过T []来限制大小。

这样,所有4个操作都是O(1)时间。

答案 1 :(得分:1)

您可以使用Arrays.asList

执行此操作
  • 这是一个固定大小的数据结构,由数组支持。
  • 您可以使用list.set(i, null)
  • 将元素设置为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);
}