繁体   English   中英

如何将一个 ArrayList 中的元素添加到另一个?

[英]How do you add elements from one ArrayList to another?

所以我有一个水果的 ArrayList,它有水果的名字和它的主要维生素是什么:

ArrayList<Foods> fruit; 
public Fruit() {
  fruit = new ArrayList<Foods>();
  fruit.add(new Foods("Orange", "Vitamin C"));
}

等等..

我想将所有含有维生素 C 的水果添加到另一个数组列表中,因此我使用以下方法迭代它们:

Iterator vitC = fruit.iterator();
    while (vitC.hasNext()) {
        if (vitC.next().contains("Vitamin C")) {
            vitCfruit.add(vitC.next());
        }
}

然而,这会添加下一个值,所以如果苹果在列表中的橙色之后,它会将苹果添加到下一个 ArrayList 而不是橙色。

我将忽略代码中的明显错误。 为了使用列表中的元素,您应该执行以下操作:

Iterator vitC = fruit.iterator();
    while (vitC.hasNext()) {
        Foods x = vitC.next();
        if (x.contains("Vitamin C")) { // should look for a Foods object here!!!
            administrators.add(x);
        }
}

您声明的“if”中的 vitC.next() 将起作用,但将其添加到新列表时,您将不会访问下一行中的相同元素。

使用 tmp 变量来存储 vitC.next() ,如果它符合条件,您仍然可以添加 ot..

Iterator vitC = fruit.iterator();
    while (vitC.hasNext()) {
        tmp = vitC.next();
        if (tmp.contains("Vitamin C")) { // should look for a Foods object here!!!
            administrators.add(tmp);
        }
}

增强的 for 循环使这变得简单:

for (Fruit thisFruit : fruit) {
    if (thisFruit.contains("Vitamin C")) {
        vitCfruit.add(thisFruit);
    }
}

在 Java 8 中,这对于 lambda 很简单:

List<Foods> vitCfruit = fruit.stream()
    .filter(f -> f.contains("Vitamin C"))
    .collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM