作为示例,我正在用 java 开发一个简单的 MySortedSet,它实现了 SortedSet 接口。它由一个简单的数组备份,即 E[] 数组。
我对此有几个问题:
这是类:(我不是在编写整个代码,而是在编写相关部分)
public class MySortedSet<E> implements SortedSet<E>, Iterator<E> {
private E[] array;
private Comparator<? super E> _comparator;
private int size = 0;
private int capacity;
@SuppressWarnings("unchecked")
public MySortedSet() {
this.capacity = 10;
this.array = (E[]) new Object[this.capacity];
// this.array = Array.newInstance(Class<E> var,int size);
// We have to get Class<E> from outside caller.
}
}
由于它接受从原始类型到引用类型等所有类型的类型。我不确定何时删除项目,分配 null 是代替已删除项目的好方法。由于 Java 使用 0 初始化原始类型。所以 null 仅适用于引用类型。
下面可能是非常糟糕的设计:
@Override
public boolean remove(Object o) {
int indexOfElement = this.find(o);
boolean removed = false;
if (indexOfElement != -1) {
this.array[indexOfElement] = null;
removed = true;
}
return removed;
}
有人能告诉我从数组中删除元素的最佳方法是什么吗?
编辑:
老实说,我想从一个简单的数组中删除一个元素就像将没有删除项的整个数组复制到一个全新的数组中,但我不确定它在性能等方面的效率如何。