Java使用ArrayList.addAll() 方法合并数组列表
addAll() 方法 将给定集合中的所有元素追加到另一个列表末尾。
import java.util.ArrayList; import java.util.Arrays; public class ArrayListExample { public static void main(String[] args) throws Exception { ArrayList<String> listOne = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "f")); ArrayList<String> listTwo = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "e")); listOne.addAll(listTwo); //Merge both lists System.out.println(listOne); } }
程序输出:
[a, b, c, d, e, a, b, c, f, g]
合并后的数组列表中包含有重复的元素。 我们可以使用 LinkedHashSet 进行转换。
import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; public class ArrayListExample { public static void main(String[] args) throws Exception { ArrayList<String> listOne = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "e")); ArrayList<String> listTwo = new ArrayList<>(Arrays.asList("a", "b", "c", "f", "g")); Set<String> set = new LinkedHashSet<>(listOne); set.addAll(listTwo); List<String> combinedList = new ArrayList<>(set); System.out.println(combinedList); List<String> listTwoCopy = new ArrayList<>(listTwo); listTwoCopy.removeAll(listOne); listOne.addAll(listTwoCopy); System.out.println(listOne); } }
程序输出。
[a, b, c, d, e, f, g] [a, b, c, d, e, f, g]
on it road.com
Java 8 中使用Stream.flatMap() 合并数组列表
Java 8 流 Stream 的 flatMap() 方法可用于获取单个流中两个或者多个列表的元素,然后将流元素收集到一个数组列表中。
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class ArrayListExample { public static void main(String[] args) throws Exception { ArrayList<String> listOne = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "e")); ArrayList<String> listTwo = new ArrayList<>(Arrays.asList("a", "b", "c", "f", "g")); List<String> combinedList = Stream.of(listOne, listTwo) .flatMap(x -> x.stream()) .collect(Collectors.toList()); System.out.println(combinedList); } }
程序输出。
[a, b, c, d, e, a, b, c, f, g]
日期:2020-09-17 00:09:23 来源:oir作者:oir