Java 我必须编写自己的trimtoSize()方法来创建一个新数组

Java 我必须编写自己的trimtoSize()方法来创建一个新数组,java,arrays,Java,Arrays,有人给了我一个预先编写的程序,但有几个方法除外,其中一个是trimtoSize()。我知道它已经存在了,但为此我必须写我自己的。我必须使它在数组中有空的空间,我必须使用相同的值创建一个新数组,并使大小精确。我已经能够使用size()和data.length来比较大小,但是我不确定如何创建一个新数组,然后使用它,因为该函数不返回任何内容(它是空的) 这是我到目前为止所拥有的 public void trimToSize(){ Array<Integer> temp = new Arr

有人给了我一个预先编写的程序,但有几个方法除外,其中一个是
trimtoSize()
。我知道它已经存在了,但为此我必须写我自己的。我必须使它在数组中有空的空间,我必须使用相同的值创建一个新数组,并使大小精确。我已经能够使用
size()
data.length
来比较大小,但是我不确定如何创建一个新数组,然后使用它,因为该函数不返回任何内容(它是空的)

这是我到目前为止所拥有的

public void trimToSize(){

Array<Integer> temp = new Array<Integer>();

if(size() < data.length){
    int max = size();
    for(int i=0; i<size();i++){
        temp.add(data[i]);
    }
}}
public void trimToSize(){
数组温度=新数组();
if(size()对于(int i=0;i我无法确定是否看到了代码的其余部分,但它似乎只是类的一部分,在该类中是一个名为data的整数数组。。。
如果这个假设是真的,那么这应该行得通

public void trimToSize() {
    int size = 0;
    for(int i = 0; i < this.data.length; i++) {
        if(this.data[i] != null) {
            size++;
        }
    }
    Interger[] temp = new Interger[size];
    for(int i = 0, j = 0; i < this.data.length; i++) {
        if(this.data[i] != null) {
            temp[j] = this.data[i];
            j++;
        }
    }
    this.data = temp;
}
public void trimToSize(){
int size=0;
for(int i=0;i
以下是我从你的问题中了解到的……你有一个不完整的预定义类,它模仿了
数组列表的行为。你必须自己定义一个行为是
trimToSize()
。根据

这只是为了保存内存。所以我想这里有一个类就是这样做的

public static class MyArrayList {
    private Object[] array;
    private int capacity;
    private int size;
    private int index;

    public MyArrayList(int capacity) {
        this.capacity = capacity;
        array = new Object[capacity];

        index = 0;
    }

    public int size() {
        return size;
    }

    public int add(Object item) {
        if (index == capacity) {
            increaseSize();
        }

        array[index] = item;
        index++;
        size++;

        return index;
    }

    public Object get(int index) {
        if (0 <= index && index < size) {
            return array[index];
        } else {
            throw new IndexOutOfBoundsException();
        }
    }

    public void trimToSize() {
        if (size < capacity) {
            Object[] newArray = new Object[size];
            System.arraycopy(array, 0, newArray, 0, size);
            array = newArray;
            capacity = size;
        }
    }

    private void increaseSize() {
        capacity++;
        Object[] newArray = new Object[capacity];
        System.arraycopy(array, 0, newArray, 0, array.length);
        array = newArray;
    }
}
公共静态类MyArrayList{
私有对象[]数组;
私人int能力;
私有整数大小;
私有整数索引;
公共MyArrayList(内部容量){
这个。容量=容量;
数组=新对象[容量];
指数=0;
}
公共整数大小(){
返回大小;
}
公共整数添加(对象项){
如果(索引==容量){
增加大小();
}
数组[索引]=项;
索引++;
大小++;
收益指数;
}
公共对象get(int索引){

如果(0),请快速搜索方法参数和返回类型。您的答案将在那里找到。您可以在方法调用后将Arraylist作为参数传递给方法中的Arraylist。您可以使用它的引用,而无需返回它。
public static void main(String[] args) throws Exception {
    MyArrayList myArrayList = new MyArrayList(5);
    myArrayList.add(1);
    myArrayList.add(2);
    myArrayList.add(3);

    for (int i = 0; i < myArrayList.size(); i++) {
        System.out.println(myArrayList.get(i));
    }

    myArrayList.trimToSize();
    myArrayList.add(4);
}