Java 向数组中间添加元素(数据结构)

Java 向数组中间添加元素(数据结构),java,arrays,sorting,generics,Java,Arrays,Sorting,Generics,我在为我的data structures类实现数组结构的add方法时遇到了问题,无法找到一种方法来解决如何正确实现这一点。我知道这是一种不切实际的处理数据的方法,但是,嘿,数据结构 说明: add方法确保此集合包含指定的元素。 不允许重复或空值。该方法返回 如果修改了此集合(即添加了元素),则为true;如果为false,则为false 否则。如果数组已满,则必须将数组“调整大小”两次 一样大。请注意,对的泛型类型参数T的约束 ArraySet类确保值具有自然顺序 存储在一个数组集合中。必须在中

我在为我的data structures类实现数组结构的add方法时遇到了问题,无法找到一种方法来解决如何正确实现这一点。我知道这是一种不切实际的处理数据的方法,但是,嘿,数据结构

说明:

add方法确保此集合包含指定的元素。 不允许重复或空值。该方法返回 如果修改了此集合(即添加了元素),则为true;如果为false,则为false 否则。如果数组已满,则必须将数组“调整大小”两次 一样大。请注意,对的泛型类型参数T的约束 ArraySet类确保值具有自然顺序 存储在一个数组集合中。必须在中维护内部阵列 在任何时候提升自然秩序。add的时间复杂度 方法必须是O(N),其中N是集合中的元素数

我们只能使用数组和迭代器类!请不要使用ArrayList给出答案。

我的Psudocode是:

检查元素是否存在,检查数组是否已满,如果已满,则检查大小是否为两倍, 比较元素以找到一个可以维持自然秩序的索引 和插入元素或查找重复项并退出,从中复制数组 自上而下并与插入的图元和底部零件组合

实际代码:

//Given Fields
T[] elements;
int size;

//Add Method
public boolean add(T element) {
        if (element != null) {
            int index = -1;
            int last_compare = -1;
            for (int i = 0; i < size; i++) {
                int compare = elements[i].compareTo(element);
                if (compare > 0 && last_compare < 0) { //larger element, last element was smaller. 
                    if (isFull()) {
                        resize(elements.length * 2);
                    }
                    index = i;
                    break;
                } else if (compare == 0) {
                    return false;
                }
                last_compare = compare;
            }

            T[] temp = null;
            //Need to copy the array here

        } else {
            return false;
        }
    }
//给定字段
T[]元素;
整数大小;
//添加方法
公共布尔加法(T元素){
if(元素!=null){
int指数=-1;
int last_compare=-1;
对于(int i=0;i0&&last\u compare<0){//较大的元素,则最后一个元素较小。
如果(isFull()){
调整大小(元素长度*2);
}
指数=i;
打破
}否则如果(比较==0){
返回false;
}
最后一次比较=比较;
}
T[]温度=零;
//需要在这里复制数组吗
}否则{
返回false;
}
}
我不知道如何在保持O(N)时间复杂度的同时正确插入此项


有什么想法吗?

在您知道需要添加另一个元素之前,请不要将大小加倍。啊,我没有想到这一点,谢谢。您是否考虑过使用ArraySet并对其进行排序?这不符合要求吗?排序当然意味着可比较;)检查java.lang.System.arraycopy以将完整数组复制到其大小的两倍。为什么不使用Arrays.sort()?