gpt4 book ai didi

java - 在java中计算并打印String中相同的出现次数

转载 作者:行者123 更新时间:2023-11-30 07:44:12 25 4
gpt4 key购买 nike

需要帮助来排序并有效地打印以下字符串中出现的相同单词。

这是字符串的出现:{java=2, occurences=1, program=3, sample=1, the=2}

预期输出:

java=2,occurences=1,sample=1,the=2

String str = "sample program java program the occurences the java program";
String[] inputstr = str.split(" ");
TreeMap<String,Integer> map = new TreeMap<>();
for(String input: inputstr) {
if(map.containsKey(input)) {
int value = map.get(input);
map.put(input,value+1);
} else {
map.put(input,1);
}
}

最佳答案

您可以使用 java-8 将上面的代码简单地转换为一行

Map<String, Long> countMap = Arrays.stream(inputstr)
.collect(Collectors.groupingBy(Object::toString, Collectors.counting()));

编辑:

我们需要在 map 中找到出现不止一个的值。使用以下代码实现:

// inversed the map using "google-guava.jar"
Multimap<Long, String> inverseMap = HashMultimap.create();
for (Entry<String, Long> entry : countMap .entrySet()) {
inverseMap.put(entry.getValue(), entry.getKey());
}

for (Entry<Long, Collection<String>> entry : inverseMap.asMap().entrySet()) {
// split the values into an array
Object[] split = entry.getValue().stream().toArray();
if (split != null && split.length > 1) {
for (int j = 0; j < split.length; j++) {
System.out.println(String.valueOf(split[j]) + " : "
+ countMap.get(String.valueOf(split[j])));
}
}
}

关于java - 在java中计算并打印String中相同的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52745002/

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