stream 对list截取第一字符并分组
时间: 2024-10-09 20:12:56 浏览: 22
在Java中,可以使用`Stream` API对`List<String>`进行操作,例如截取每个字符串的第一个字符并按这个字符进行分组。首先,你需要导入`java.util.stream.Collectors`,然后可以按照以下步骤进行:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
// 使用Stream API 创建一个新的Map,键是第一个字符,值是包含该字符的所有字符串
Map<Character, List<String>> groupedByFirstChar = strings.stream()
.map(s -> s.charAt(0)) // 截取每个字符串的第一个字符
.collect(Collectors.groupingBy(Function.identity(), Collectors.toList()));
// 输出结果
groupedByFirstChar.forEach((key, value) -> System.out.println("Key: '" + key + "', Values: " + value));
}
}
```
在这个例子中,`collect(Collectors.groupingBy(Function.identity(), Collectors.toList()))`会创建一个Map,其中`Function.identity()`用于保持原元素不变作为键,而`Collectors.toList()`将具有相同键的元素收集到一个列表中。
阅读全文