作者:领悟人生的悲欢喜乐_829 | 来源:互联网 | 2022-10-28 18:47
我试图将以下代码转换为Java 8 ::
String s = "12345";
Map map = new HashMap();
for (int i = 0; i
我尝试并发现以下迭代方式:
IntStream.rangeClosed(0, s.length).foreach(d -> {
//all statements from char to map.put
}) ;
我不确定这是否是正确的方法。
1> Cristian..:
你可以这样做:
s.chars()
.mapToObj(x -> (char) x)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
.mapToObj(x -> (char) x)
这是必需的,因为.chars()
它为您提供了一个整数流,但是要使用它,groupingBy
您需要使用对象而不是基元
groupingBy
接收一个函数以获取要分组的密钥和一个Collector
实现
Function.identity()
只是一个函数,它返回传递给它的任何元素
Collectors.counting()
是一个重要的收藏家
请注意,这将创建一个Map 。您将需要例如`Collectors.summingInt(ch-> 1)`而不是`Collectors.counting()`来获取Map 。