- 使用Java 8 Stream API实现List扁平化
javaCopy Code
List<List<String>> nestedList = Arrays.asList( Arrays.asList("a", "b"), Arrays.asList("c", "d") ); List<String> flatList = nestedList.stream() .flatMap(List::stream) .collect(Collectors.toList()); // 结果: [a, b, c, d] - 使用传统循环方式拆平List
javaCopy Code
List<List<Integer>> numbers = Arrays.asList( Arrays.asList(1, 2), Arrays.asList(3, 4) ); List<Integer> result = new ArrayList<>(); for (List<Integer> subList : numbers) { result.addAll(subList); } - 使用Guava库的Iterables.concat()方法
javaCopy Code
List<List<String>> lists = Arrays.asList( Arrays.asList("x", "y"), Arrays.asList("z") ); Iterable<String> combined = Iterables.concat(lists); List<String> flattened = Lists.newArrayList(combined); - 处理包含分隔符字符串的List扁平化
javaCopy Code
List<String> stringList = Arrays.asList("a,b,c", "d,e", "f"); List<String> flattened = stringList.stream() .flatMap(s -> Arrays.stream(s.split(","))) .collect(Collectors.toList()); // 结果: [a, b, c, d, e, f] - 多线程处理大型List的扁平化
javaCopy Code
List<List<Object>> bigList = ...; List<Object> result = Collections.synchronizedList(new ArrayList<>()); bigList.parallelStream().forEach(result::addAll); 注意事项:
- 对于大型数据集,建议使用并行流(parallelStream)提高性能7
- 如果原始List包含null值,需要额外处理以避免NullPointerException
- 使用第三方库(如Guava)可以简化代码但会增加依赖1
- 字符串拆分场景要注意正则表达式的特殊字符处理
