将3个arraylist合并为一个

我想在java中合并3个arraylist。 有谁知道哪种方法最好?

使用ArrayList.addAll() 。 这样的东西应该工作(假设列表包含String对象;你应该相应地改变)。

 List combined = new ArrayList(); combined.addAll(firstArrayList); combined.addAll(secondArrayList); combined.addAll(thirdArrayList); 

更新

我可以通过您的评论看到您实际上可能正在尝试创建2D列表。 如果是这样,以下代码应该起作用:

 List> combined2d = new ArrayList>(); combined2d.add(firstArrayList); combined2d.add(secondArrayList); combined2d.add(thirdArrayList); 

那么使用java.util.Arrays.asList来简化合并呢?

 List one = Arrays.asList("one","two","three"); List two = Arrays.asList("four","five","six"); List three = Arrays.asList("seven","eight","nine"); List> merged = Arrays.asList(one, two, three); 

使用Java 8 Streams:

清单清单

 List> listOfList = Stream.of(list1, list2, list3).collect(Collectors.toList()); 

字符串列表

 List list = Stream.of(list1, list2, list3).flatMap(Collection::stream).collect(Collectors.toList()); 

使用Java 9 List.of静态工厂方法(警告:此列表是不可变的,不允许为null)

 List> = List.of​(list1, list2, list3); 

其中list1, list2, list3的类型为List

好吧差不多一年了我知道但我最近遇到了这个问题,我有一个对象(JobList),它包含一个对象列表(作业)这个列表可以是任何大小我的解决方案需要X个JobLists并返回一个JobList,所以给出它将返回一个JobList对象,其中Job对象列表将按如此排序

job1FromJobList1 job1FromJobList2 job1FromJobList3 job2FromJobList1 job2FromJobList2 job2FromJobList3 job3FromJobList1 job3FromJobList2 job3FromJobList3

这就是我的意思,如果我说合并,你可以忽略我创建对象的部分主要部分获得最大,然后将它们添加到列表,如果我

 public JobList merge(List jobListList) { JobList mergedJobList = new JobList(); int max = 0; ArrayList mergedList = new ArrayList<>(); ArrayList tags = new ArrayList<>(); for (JobList jobList : jobListList){ max = Math.max(max,ListConverter.jobListFromString(jobList.getJobList()).size()); for (String tag : jobList.getJobListsTags()){ tags.add(tag); } } for (int i = 0; i < max; i++){ for (JobList jobList : jobListList){ if (i < ListConverter.jobListFromString(jobList.getJobList()).size()) mergedList.add(ListConverter.jobListFromString(jobList.getJobList()).get(i)); } } mergedJobList.setJobListTitle("Title"); mergedJobList.setJobListFavourite(false); mergedJobList.setJobListsTags((String[]) tags.toArray()); mergedJobList.setJobListColour(this.getString(R.string.white)); mergedJobList.setJobList(ListConverter.stringFromJobList(mergedList)); return mergedJobList; }