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