繁体   English   中英

具有多个ArrayList

[英]Having more than one ArrayList

大家好,今天我正尝试在ArrayList中执行此操作,我知道这是可能的,但主要是给我一个例外。 现在,我想知道我做错了什么或做这件事的最佳方法是什么。 我试图拥有一个ArrayList,并且在ArrayList中有另一个,我给它一个变量。

import java.util.ArrayList;
import java.util.Collection;

public class Example3 {
public static void main(String[] args) {
    ArrayList<ArrayList<Family>> smallFamily = new ArrayList<ArrayList<Family>>();
    smallFamily.addAll((Collection<? extends ArrayList<Family>>) (new Family("John",89 )));

    smallFamily.addAll((Collection<? extends ArrayList<Family>>) new Family ("Smith", 78)));

    for(ArrayList<Family> s: smallFamily){
        System.out.println(s);
    }

}

现在贝娄是我的家庭班,在我的家庭中这就是价值观

public class Family {

    public String Name;
    public int weight;

    public Family(String Name, int weight){
        this.Name = Name;
        this.weight = weight;
    }
    public String toString(){
        return ("The name is " + this.Name + "The weight is: " + this.weight);
    }
}}

当我编译并运行程序时抛出的异常是

Exception in thread "main" java.lang.ClassCastException: Examples.Family cannot be cast to java.util.Collection
    at Examples.Example3.main(Example3.java:9)

现在我自己学习Java,没有人问我。 任何帮助将不胜感激。

您正在尝试将对象转换为集合。 这是行不通的。 相反,您需要这样做:

smallFamily.add(new ArrayList<Family>(1) {{add(new Family("", 0));}});

这将创建一个ArrayList ,在创建时将添加new Family("", 0) 然后,它将将此数组列表添加到smallFamily数组列表。

现在为什么在这里得到这条线

smallFamily.addAll((Collection<? extends ArrayList<Family>>) (new Family("John",89 )));

只是因为计算机无法理解您在做什么,所以它会为您投放。 或者你投下:)。 现在尝试将对象转换为集合不起作用。

而是您需要尝试一下

public class Example3 {
public static void main(String[] args) {
    ArrayList<ArrayList<Family>> smallFamily = new ArrayList<ArrayList<Family>>();
    smallFamily.add(new ArrayList<Family>(2222) {{add(new Family("smith ", 0));}});

    smallFamily.add(new ArrayList<Family>(333) {{add(new Family("john ", 0));}});

    for(ArrayList<Family> s: smallFamily){
        System.out.println(s);
    }

}
}

当您添加家庭班级时

public class Family {

    public String Name;
    public int weight;

    public Family(String Name, int weight){
        this.Name = Name;
        this.weight = weight;
    }
    public String toString(){
        return ("The name is " + this.Name + "The weight is: " + this.weight);
    }
}

输出应为

[The name is smith The weight is: 0]
[The name is john The weight is: 0]

希望这就是您的预期。

暂无
暂无

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

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