用stream流拆分list集合
时间: 2023-05-15 09:07:59 浏览: 972
可以使用Java 8的Stream API中的splitter()方法来拆分List集合。具体实现代码如下:
List<String> list = Arrays.asList("a,b,c", "d,e,f", "g,h,i");
List<String> result = list.stream()
.flatMap(str -> Arrays.stream(str.split(",")))
.collect(Collectors.toList());
这段代码将List中的每个元素按照逗号进行拆分,然后将拆分后的结果合并成一个新的List集合。
相关问题
根据入职时间年份拆分多个list集合,并按照入职时间排序 用java stream流实现
好的,这个问题可以回答。以下是代码示例:
List<Employee> employees = new ArrayList<>();
// 假设这里有一些员工对象,每个对象都有一个入职时间属性
Map<Integer, List<Employee>> employeeMap = employees.stream()
.collect(Collectors.groupingBy(e -> e.getHireDate().getYear()));
List<List<Employee>> employeeLists = new ArrayList<>(employeeMap.values());
employeeLists.sort((l1, l2) -> l1.get().getHireDate().compareTo(l2.get().getHireDate()));
stream流Map的使用
Stream流中的map方法可以将一个流中的元素类型转化为另一种类型,常用于数据类型的转换。使用map方法时,需要传入一个Function接口类型的参数,该接口的apply方法将被应用于流中的每个元素,返回一个新的元素类型。例如,可以将一个字符串流中的每个字符串转化为其长度,代码如下:
```
List<String> strings = Arrays.asList("hello", "world", "java");
List<Integer> lengths = strings.stream()
.map(String::length)
.collect(Collectors.toList());
```
在上面的代码中,首先将一个字符串列表转化为一个字符串流,然后使用map方法将每个字符串转化为其长度,最后使用collect方法将结果收集到一个列表中。
除了map方法,还有一个flatMap方法,可以将一个流中的元素展开为多个元素,常用于将嵌套的集合或数组展开为一个扁平的流。例如,可以将一个字符串流中的每个字符串拆分为字符流,代码如下:
```
List<String> strings = Arrays.asList("hello", "world", "java");
List<Character> characters = strings.stream()
.flatMap(str -> str.chars().mapToObj(c -> (char) c))
.collect(Collectors.toList());
```
在上面的代码中,首先将一个字符串列表转化为一个字符串流,然后使用flatMap方法将每个字符串拆分为字符流,最后使用collect方法将结果收集到一个列表中。注意,flatMap方法需要传入一个Function接口类型的参数,该接口的apply方法将被应用于流中的每个元素,返回一个新的流。在上面的代码中,使用了str.chars().mapToObj(c -> (char) c)将一个字符串转化为一个字符流。