gpt4 book ai didi

string - 如何在 Java 8 中使用 Map Put 操作编写字符串迭代?

转载 作者:行者123 更新时间:2023-12-01 09:12:42 26 4
gpt4 key购买 nike

我正在尝试将以下代码转换为 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
}) ;

我不确定这是否是正确的做法。

最佳答案

你可以这样做:

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() 是一个计数的收集器

关于string - 如何在 Java 8 中使用 Map Put 操作编写字符串迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com