Java

flatmap java能用于哪些数据结构

小樊
82
2024-11-23 15:25:24
栏目: 编程语言

flatMap 是 Java 8 中引入的一个流操作,它主要用于将多个流合并成一个流,并将每个流中的元素转换成另一种形式

  1. List<List<T>>:将多个列表合并成一个流,每个列表中的元素都会被转换成流中的元素。例如,你可以使用 flatMap 将一个二维列表转换为一个一维流。
List<List<Integer>> lists = Arrays.asList(
    Arrays.asList(1, 2, 3),
    Arrays.asList(4, 5, 6),
    Arrays.asList(7, 8, 9)
);

Stream<Integer> flatStream = lists.stream().flatMap(list -> list.stream());
  1. Set<T>:将一个集合转换为一个流,同时消除重复元素。例如,你可以使用 flatMap 将一个 Set<List<Integer>> 转换为一个 Stream<Integer>
Set<List<Integer>> sets = new HashSet<>();
sets.add(Arrays.asList(1, 2, 3));
sets.add(Arrays.asList(4, 5, 6));
sets.add(Arrays.asList(1, 2, 3)); // 重复元素,将被消除

Stream<Integer> flatStream = sets.stream().flatMap(list -> list.stream());
  1. Map<K, V>:将一个映射的键值对转换为一个流,其中每个键值对都被转换为一个包含键和值的流元素。例如,你可以使用 flatMap 将一个 Map<String, List<Integer>> 转换为一个 Stream<Integer>
Map<String, List<Integer>> map = new HashMap<>();
map.put("a", Arrays.asList(1, 2, 3));
map.put("b", Arrays.asList(4, 5, 6));
map.put("c", Arrays.asList(7, 8, 9));

Stream<Integer> flatStream = map.entrySet().stream()
    .flatMap(entry -> entry.getValue().stream());

总之,flatMap 可以用于任何实现了 Streamable 接口的数据结构,例如 ListSetMap 等。它主要用于将多个流合并成一个流,并将每个流中的元素转换成另一种形式。

0
看了该问题的人还看了