- 使用Java 8 Stream API实现List扁平化
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());
- 使用传统循环方式拆平List
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()方法
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扁平化
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());
- 多线程处理大型List的扁平化
List<List<Object>> bigList = ...; List<Object> result = Collections.synchronizedList(new ArrayList<>()); bigList.parallelStream().forEach(result::addAll);
注意事项:
- 对于大型数据集,建议使用并行流(parallelStream)提高性能7
- 如果原始List包含null值,需要额外处理以避免NullPointerException
- 使用第三方库(如Guava)可以简化代码但会增加依赖1
- 字符串拆分场景要注意正则表达式的特殊字符处理