gpt4 book ai didi

java - 设计一个在数组中存储可比对象的通用类

转载 作者:行者123 更新时间:2023-12-02 11:43:38 26 4
gpt4 key购买 nike

我试图弄清楚如何将 tst.insert() 和 tsttxt.insert() 的值存储到数组中。到目前为止,我唯一能做的就是让程序识别出它们的存在。当我尝试打印变量时,我得到了 tst.insert() 的最后一个值。我假设显示最后一个值,因为其他值被覆盖。

public class genericdrive {
public static void main(String[] args) {
collection<Integer> tst = new collection<>();
collection<String> tsttxt = new collection<>();
//System.out.println("If collection is empty return true: " + tst.isEmpty());
tst.insert(45);
tst.insert(43);
tst.insert(90);
tsttxt.insert("Jeff");
tsttxt.insert("Rey");
}
}

..

public class collection<T> extends genericdrive {
private T element;
private T[]array;
// collection<T> objt = new collection<>();

public void set(T element) {
this.element = element;
}

public T get() {
return element;
}

public <T> void insert(T i) {
i = (T) element;
//array[0]=<T> i;
}

}

最佳答案

考虑到 array 变量保存了您编写的插入函数的所有元素,因此不会将任何值插入其中。

如果私有(private)变量预计是一个数组,这是一个解决方法。

尝试以下操作:

public class MyCollection<T> {
private T element;
private T[] array;

MyCollection(){
array = (T[]) Array.newInstance( Comparable.class , 0);
}

public void set(T element) {
this.element = element;
}

public T get() {
return element;
}

public void insert(T i) {


T[] temp = (T[]) Array.newInstance(array.getClass().getComponentType(), array.length + 1);
temp[array.length] = i;
System.arraycopy(array, 0, temp, 0, array.length);
array = temp;
}

}

关于java - 设计一个在数组中存储可比对象的通用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48362191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com