java - 如何将数组变为ArrayList? (泛型)

标签 java generics arraylist

我有一个任务将变量的类型更改为 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));
    }
}

这个循环执行的操作与两个循环和原始实现的分配执行的操作相同。请注意,将旧数组的内容复制到新数组中的操作仍然存在,但它被封装在 ArrayListadd 方法中。

关于java - 如何将数组变为ArrayList? (泛型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705294/

相关文章:

java - 如何在maven中设置级联版本?

java - 调用惰性初始化字段的 getter 后出现 org.hibernate.lazyinitializationException

java - 我想将泛型类型 E 解析为变量

java - 有什么方法可以将一个条目添加到具有来自 int 变量的自定义位置的 Java 数组列表中吗?

java - Java中如何查找ArrayList中元素的位置?

java - 雅各布错误: Can't get object clsid from progid

java - 使用 String 方法在 java 中将第一个和最后一个字母大写

c# - 在 ServiceStack 请求过滤器上传递/公开 T

c# - 如何获取从泛型类继承的集合的所有类型?

java - 使用比较器对对象进行 ArrayList 排序