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;
}
}