从Java中常用名称的两个列表中生成第三个列表

从Java中常用名称的两个列表中生成第三个列表,java,list,arraylist,Java,List,Arraylist,我有两个Java列表。第一个列表包含名称列。第二个列表包含名称和状态列 第一个名单包括:大卫;大卫 第二张名单包括:大卫,3岁;大卫,1岁;;大卫,2岁;约翰,1岁;约翰3 对于两个列表中的每个常用名称,我应该在下面一行中列出第三个列表 名称状态1状态2状态3 大卫1233 约翰13 如何使用Java列表集合实现这一点 我的示例:我创建了三个类,其中包含三个列表。 //头等舱 公共类头等{ 私有字符串名称 public FirstClass(String name) { super();

我有两个Java列表。第一个列表包含名称列。第二个列表包含名称和状态列

第一个名单包括:大卫;大卫

第二张名单包括:大卫,3岁;大卫,1岁;;大卫,2岁;约翰,1岁;约翰3

对于两个列表中的每个常用名称,我应该在下面一行中列出第三个列表

名称状态1状态2状态3

大卫1233
约翰13

如何使用Java列表集合实现这一点

我的示例:我创建了三个类,其中包含三个列表。 //头等舱

公共类头等{
私有字符串名称

public FirstClass(String name) {
    super();
    this.name = name;
}
//这里有二传手和接球手 }

//二等舱

公务舱二等舱{

private String name;

private int status; 

public SecondClass(String name, int status) {
    super();
    this.name = name;
    this.status = status;
}
   // setters and getters here
}

//第三类

公共类第三类{

private String name;    
private int status1;    
private int status2;    
private int status3;

public ThirdClass(String name, int status1, int status2, int status3) {
    super();
    this.name = name;
    this.status1 = status1;
    this.status2 = status2;
    this.status3 = status3;
}

public ThirdClass() {
    // TODO Auto-generated constructor stub
}

// setters and getters here
}

//执行类

导入java.util.*

公共类客户端执行{

public static void main(String[] args) {


    List<FirstClass> a1 = new ArrayList<FirstClass>();

    a1.add(new FirstClass("David"));
    a1.add(new FirstClass("John"));
    a1.add(new FirstClass("David"));


    List<SecondClass> a2 = new ArrayList<SecondClass>();

    a2.add(new SecondClass ("John", 2));
    a2.add(new SecondClass ("David", 2));
    a2.add(new SecondClass ("David", 3));
    a2.add(new SecondClass ("David", 1));
    a2.add(new SecondClass ("John", 3));


ThirdClass third = null;

List<ThirdClass> a3 =null;

    for(FirstClass  first: a1) {

        third = new ThirdClass();
        a3 = new ArrayList<ThirdClass>();

        for( SecondClass second: a2) {

            if(first.getName().equalsIgnoreCase(second.getName())) {

                third.setName(second.getName());

                if(second.getStatus() ==1){

                    third.setStatus1(second.getStatus());
                }
                else if(second.getStatus() ==2){

                    third.setStatus2(second.getStatus());
                }
                else if(second.getStatus() ==3){

                    third.setStatus3(second.getStatus());
                }
            }

            a3.add(third);
        }

    }

    printThirdList(a3);

}

private static void printThirdList(List<ThirdClass> a3) {

            for(ThirdClass list: a3){
            System.out.println(list.getName()+list.getStatus1()+list.getStatus2()+list.getStatus3());   

            }
}

首先,将第三类的ArrayList移到第一个循环之外

第二,从第二个循环中删除a3.add并将其放入第一个循环,因为它为第二个类的每个值添加相同的实例。这会导致多个输出

List<ThirdClass> a3 = new ArrayList<ThirdClass>();

    for(FirstClass  first: a1) {

        ThirdClass third = new ThirdClass();

        for( SecondClass second: a2) {

            if(first.getName().equalsIgnoreCase(second.getName())) {

                third.setName(second.getName());

                if(second.getStatus() ==1){

                    third.setStatus1(second.getStatus());
                }
                else if(second.getStatus() ==2){

                    third.setStatus2(second.getStatus());
                }
                else if(second.getStatus() ==3){

                    third.setStatus3(second.getStatus());
                }
            }
        }
        a3.add(third);
    }
List a3=新的ArrayList();
适用于(头等舱:a1){
ThirdClass third=新的ThirdClass();
适用于(二等舱:a2){
if(first.getName().equalsIgnoreCase(second.getName())){
第三个.setName(第二个.getName());
if(second.getStatus()==1){
third.setStatus1(second.getStatus());
}
else if(second.getStatus()==2){
第三个.setStatus2(第二个.getStatus());
}
else if(second.getStatus()==3){
第三个.setStatus3(第二个.getStatus());
}
}
}
a3.加入(第三项);
}
List<ThirdClass> a3 = new ArrayList<ThirdClass>();

    for(FirstClass  first: a1) {

        ThirdClass third = new ThirdClass();

        for( SecondClass second: a2) {

            if(first.getName().equalsIgnoreCase(second.getName())) {

                third.setName(second.getName());

                if(second.getStatus() ==1){

                    third.setStatus1(second.getStatus());
                }
                else if(second.getStatus() ==2){

                    third.setStatus2(second.getStatus());
                }
                else if(second.getStatus() ==3){

                    third.setStatus3(second.getStatus());
                }
            }
        }
        a3.add(third);
    }