Java兩個ArrayList合併

Java兩個ArrayList合併

package com.example.think.common.vincent;

import com.google.common.collect.Iterables;
import org.apache.commons.collections4.ListUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @program: think
 * @description: List合併
 * @author: SnailThink
 * @create: 2020-06-11 19:57
 **/

public class ListMergeHelp {


    /**
     * 合併List ListAddALL
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList(List<T> list1, List<T> list2) {
        List<T> mergeList = new ArrayList<>();
        mergeList.addAll(list1);
        mergeList.addAll(list2);
        return mergeList;
    }

    /**
     * 合併List ListAddALL
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList2(List<T> list1, List<T> list2) {
        List<T> mergeList = new ArrayList<>(list1);
        mergeList.addAll(list2);
        return mergeList;
    }


    /**
     * 合併List ListAddALL
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList3(List<T> list1, List<T> list2) {

        return new ArrayList<T>() {{
            addAll(list1);
            addAll(list2);
        }};
    }


    /**
     * 合併List Java8
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList4(List<T> list1, List<T> list2) {

        return Stream.of(list1, list2).flatMap(x -> x.stream()).collect(Collectors.toList());
    }

    /**
     * 合併List Java8
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList5(List<T> list1, List<T> list2) {

        List<T> list = new ArrayList<>();
        Stream.of(list1, list2).forEach(list::addAll);
        return list;
    }


    /**
     * 合併List Stream.concat
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList6(List<T> list1, List<T> list2) {

        return Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList());
    }

    /**
     * 合併List addAll
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList7(List<T> list1, List<T> list2) {

        List<T> list = list1.stream().collect(Collectors.toList());
        list.addAll(list2);
        return list;
    }


    /**
     * 合併List collections
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList8(List<T> list1, List<T> list2) {

        return ListUtils.union(list1, list2);
    }


    /**
     * 合併List collections
     *
     * @param list1 待合併的List1
     * @param list2 待合併的List2
     * @param <T>   泛型
     * @return
     */
    public static <T> List<T> getMergeList9(List<T> list1, List<T> list2) {
        List<T> list = new ArrayList<>();
        Iterables.addAll(list, list1);
        Iterables.addAll(list, list2);
        return list;
    }


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章