在打印时拆分2种类型的Arraylist

时间:2018-05-16 17:07:59

标签: java arraylist

我有一个由Objects组成的列表 每个对象由2个不同的值组成

int number;

String name;

ArrayList<Object> objectList= new ArrayList<Object>();

我有另一个由汽车组成的清单 每辆车都有一个值

String type;

ArrayList<Cars> carList= new ArrayList<Cars>();

我想首先打印一半objectList然后打carList然后打印另一半objectList

像这样..例如:

输出=“数字+类型+名称”

基本上我想要在第一个列表之间打印第二个列表。我在网上搜索但是我不确定我应该寻找什么以及如何编码。

我再次为这个糟糕的问题感到抱歉..我正在努力学习编码,因为我买不起。

提前致谢。

3 个答案:

答案 0 :(得分:0)

只需遍历第一个列表,然后使用索引访问第二个列表中的相应Object:

for(int i = 0; i < objectList.size(); i++){
   Object obj = objectList.get(i); 
   Car car    = carList.get(i);

  //Print Here
}

答案 1 :(得分:0)

你说你想首先打印一半列表,然后你可以将原始列表分成一半:

Streams.of(objectList.sublist(0, length/2), 
           carList, 
           objectList.sublist(length/2, length))
.flatMap(Collection::stream)
.forEach(o -> {
    if (o instanceof YourObject) {
       YourObject o1 = (YourObject)o;
       // Print with YourObject
    } else if (o instanceof Cars) {
       // Print car objects
    }
})

答案 2 :(得分:0)

您可以通过for循环轻松实现此目的。 但是根据你的输出格式

objectListcarList的大小必须相同才能发挥作用。

尝试这样的事情:

for(int i=0;i<objectList.size();i++){
    String name; int number;
    number = objectList.get(i).number;
    name = objectList.get(i).name;
    String type = carList.get(i).type;
    System.out.Println(name+type+number);
}

根据你的评论,如果carList在另一个类中并且是私有的,那么你需要设置一个getter方法,它接受一个索引并返回type 像这样:

public class A{
  private ArrayList<Car> carList = new ArrayList();
........ //some codes
  public String getTypeAtIndex(int i){ return carList.get(i).type;  }
    }

然后你可以在任何地方打电话

A a;
String type = a.getTypeAtIndex(i);