如果两个列表没有相同数量的参数,我可以将它们合并为一个列表吗?


classA a = new classA (int width, int height);
classB b = new classB(in far, int near, String time);
List<classA> listA = new ArrayList<>();
listA.add(a);
List<classB> listB = new ArrayList<>();
listB.add(b);
List<Base> combinedList = new ArrayList<>();
combinedList.addAll(listA);
combinedList.addAll(ListB);

在这个例子中添加这两个列表是可能的吗?classA和classB都继承了classBase。

请看:

Base.java:

public class Base {
}

ClassA.java:

public class ClassA extends Base {
int age;
String race;
String country;
public ClassA(int age, String race, String country) {
this.age = age;
this.race = race;
this.country = country;
}
@Override
public String toString() {
return "ClassA -> age: " + age + ", race: " + race + ", country :" + country;
}
}

ClassB.java:

public class ClassB extends Base {
String day;
String month;
String year;
public ClassB(String day, String month, String year) {
this.day = day;
this.month = month;
this.year = year;
}
@Override
public String toString() {
return "ClassB -> day: " + day + ", month: " + month + ", year :" + year;
}
}

main():

public static void main(String[] args) {
// ClassA ArrayList
ArrayList<ClassA> classAArrayList = new ArrayList<>();
// ClassB ArrayList
ArrayList<ClassB> classBArrayList = new ArrayList<>();
// Base ArrayList
ArrayList<Base> baseArrayList = new ArrayList<>();
// ClassA items
ClassA itemA_1 = new ClassA(1, "val_race_1", "val_country_1");
ClassA itemA_2 = new ClassA(2, "val_race_2", "val_country_2");
ClassA itemA_3 = new ClassA(3, "val_race_3", "val_country_3");
classAArrayList.add(itemA_1);
classAArrayList.add(itemA_2);
// ClassB items
ClassB itemB_1 = new ClassB("day_1", "month_1", "year_1");
ClassB itemB_2 = new ClassB("day_2", "month_2", "year_2");
ClassB itemB_3 = new ClassB("day_3", "month_3", "year_3");
classBArrayList.add(itemB_1);
classBArrayList.add(itemB_2);
// Base ArrayList can have the ClassA ArrayList or ClassB ArrayList
baseArrayList.addAll(classAArrayList);
baseArrayList.addAll(classBArrayList);
// Base ArrayList can have the ClassA item or ClassB item
baseArrayList.add(itemA_3);
baseArrayList.add(itemB_3);
for (Base base : baseArrayList) {
System.out.println("item -> " + base.toString());
}
}

最新更新