【问题标题】:How to change an array into an ArrayList? (generics)如何将数组更改为 ArrayList? (泛型)
【发布时间】:2016-01-10 12:21:36
【问题描述】:

我的任务是将变量的类型更改为 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吗?

【问题讨论】:

  • 与其为“updatedWarehouseContent”使用数组,不如创建一个新的arraylist,将产品元素添加到其中,然后将“warehouseContent”分配给该列表?
  • @Pétur 这不是同一种“转换”。

标签: java generics arraylist


【解决方案1】:

首先将warehouseContent 类型声明为WarehouseItem 的列表:

private List<WarehouseItem> warehouseContent = new ArrayList<>();

现在您可以依靠ArrayList 的内置能力在您的registerProducts 方法中成长:

public void registerProducts(Product... products) {
    for (Product product : products) {
        warehouseContent.add(new WarehouseItem(product));
    }
}

这个循环完成了两个循环和原始实现的分配所做的事情。注意,将旧数组的内容复制到新数组中仍然存在,只是封装在ArrayListadd方法中。

【讨论】:

  • 谢谢 :) 但在 (Product : products) 行中我有一个错误“令牌“产品”的语法错误,此令牌后应有标识符”和仓库内容.add(new WarehouseItem(product ));错误:产品无法解析为变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 2019-10-03
  • 2017-03-16
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多