Объединить 3 массива в один - PullRequest
27 голосов
/ 24 декабря 2011

Я хочу объединить 3 архива в одном в Java. Кто-нибудь знает, как лучше всего это сделать?

Ответы [ 4 ]

49 голосов
/ 24 декабря 2011

Использование ArrayList.addAll().Что-то вроде этого должно работать (при условии, что списки содержат String объектов; вы должны изменить соответствующим образом).

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

Обновление

По вашим комментариям я вижу, что вы действительно пытаетесь создать2D список.В таком случае код, подобный следующему, должен работать:

List<List<String>> combined2d = new ArrayList<List<String>>();
combined2d.add(firstArrayList);
combined2d.add(secondArrayList);
combined2d.add(thirdArrayList);
8 голосов
/ 24 декабря 2011

Как насчет использования java.util.Arrays.asList для упрощения слияния?

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

List<List<String>> merged = Arrays.asList(one, two, three);
2 голосов
/ 19 октября 2017

Использование потоков Java 8:

Список списка

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

Список строк

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

Использование Java 9 List.of статического метода фабрики (Предупреждение:этот список неизменен и запрещает ноль)

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

Где list1, list2, list3 имеют тип List<String>

0 голосов
/ 09 сентября 2018

хорошо, почти год, я знаю, но у меня была эта проблема недавно, у меня есть объект (JobList), который содержит список объектов (заданий), этот список может быть любого размера, мое решение принимает X количество JobLists и возвращает один JobListТаким образом, если получить 3 объекта JobList, он вернет объект, в котором будет отсортирован список объектов Job следующим образом:

job1FromJobList1 job1FromJobList2 job1FromJobList3 job2FromJobList1 job2FromJobList2 job2FromJobList3 job3FFF2 * *После слияния вы можете игнорировать часть меня, создавая объект, основная часть которого получает максимум, а затем добавляет их в список, если я

public JobList merge(List<JobList> jobListList) {
    JobList mergedJobList = new JobList();
    int max = 0;
    ArrayList<Job> mergedList = new ArrayList<>();
    ArrayList<String> 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...