fat*_*ael 3 string lambda hashmap java-8
我试图将以下代码转换为Java 8 ::
String s = "12345";
Map<Character,Integer> map = new HashMap<Character,Integer>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
int cnt = map.get(c);
map.put(c, ++cnt);
} else {
map.put(c, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试并发现以下迭代方式:
IntStream.rangeClosed(0, s.length).foreach(d -> {
//all statements from char to map.put
}) ;
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是正确的方法。
你可以这样做:
s.chars()
.mapToObj(x -> (char) x)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
.mapToObj(x -> (char) x)这是必需的,因为.chars()它为您提供了一个整数流,但是要使用它,groupingBy您需要使用对象而不是基元groupingBy接收一个函数以获取要分组的密钥和一个Collector实现Function.identity() 只是一个函数,它返回传递给它的任何元素Collectors.counting() 是一个重要的收藏家 | 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |