我想将以下代码转换为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);
}
}
我尝试并找到了以下迭代方式:
IntStream.rangeClosed(0, s.length).foreach(d -> {
//all statements from char to map.put
}) ;
我不确定这是否是正确的做法。
toMap
:s.chars().mapToObj(i->(char)i).collect(Collectors.toMap(Function.identity(),v->1,Integer::sum));
- Hadi Jfor(int i = 0; i < s.length(); i++) map.merge(s.charAt(i), 1, Integer::sum);
。当然,您也可以使用IntStream.range(0, s.length()) .forEach(i -> map.merge(s.charAt(i), 1, Integer::sum));
。但这并不是真正的改进。 - Holger