我有一个任务将变量的类型更改为 ArrayList,并且需要将其初始化为 ArrayList。我不知道该怎么做:(
我尝试过这样的方式:
private ArrayList<T> warehouseContent = new ArrayList<T>();
public void registerProducts(Product... products) {
WarehouseItem[] updatedWarehouseContent = new WarehouseItem[warehouseContent.size()
+ products.length];
int i = 0;
for (; i < warehouseContent.size(); i++) {
updatedWarehouseContent[i] = warehouseContent[i];
}
for (; i < updatedWarehouseContent.length; i++) {
updatedWarehouseContent[i] = new WarehouseItem(products[i - warehouseContent.size()]);
}
warehouseContent=updatedWarehouseContent;
}
但我认为这是不正确的。我需要更改的源代码如下:
private WarehouseItem[] warehouseContent = new WarehouseItem[0];
public void registerProducts(Product... products) {
WarehouseItem[] updatedWarehouseContent = new WarehouseItem[warehouseContent.length
+ products.length];
int i = 0;
for (; i < warehouseContent.length; i++) {
updatedWarehouseContent[i] = warehouseContent[i];
}
for (; i < updatedWarehouseContent.length; i++) {
updatedWarehouseContent[i] = new WarehouseItem(products[i - warehouseContent.length]);
}
warehouseContent=updatedWarehouseContent;
}
有人可以给我任何提示或解释我需要在这里使用泛型类型ArrayList
吗?
最佳答案
首先将 warehouseContent
类型声明为 WarehouseItem
列表:
private List<WarehouseItem> warehouseContent = new ArrayList<>();
现在您可以依靠 ArrayList
的内置功能在您的 registerProducts
方法中进行扩展:
public void registerProducts(Product... products) {
for (Product product : products) {
warehouseContent.add(new WarehouseItem(product));
}
}
这个循环执行的操作与两个循环和原始实现的分配执行的操作相同。请注意,将旧数组的内容复制到新数组中的操作仍然存在,但它被封装在 ArrayList
的 add
方法中。
关于java - 如何将数组变为ArrayList? (泛型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705294/