gpt4 book ai didi

Java统计字符串出现次数并逆序排序

转载 作者:行者123 更新时间:2023-12-02 11:01:04 25 4
gpt4 key购买 nike

我在尝试计算字符串出现次数并按降序对它们进行排序时遇到了一些麻烦。以下是示例输入列表:

test, test, to, to, to, to, today, tomorrow, today

所需的输出按以下顺序排列:

to, test, today tomorrow

这是我的代码,用于计算字符串出现次数并按相反顺序对它们进行排序:

Map<String, Integer> sortedTextSegmentList = new LinkedHashMap<String, Integer>();
for (String s : textSegmentList) {
if (sortedTextSegmentList.get(s) != null) {
sortedTextSegmentList.put(s, sortedTextSegmentList.get(s) + 1);
} else {
sortedTextSegmentList.put(s, 1);
}
}

sortedTextSegmentList.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x, y)-> {throw new AssertionError();}, LinkedHashMap::new
));

但是,我得到以下输出:

test, to, today, tomorrow

当我尝试打印时:

sortedTextSegmentList.forEach((key, value) -> {
System.out.println("KEY" + key);
System.out.println("VALUE " + value);
});

我正在进行测试 2、到 4、明天 1、今天 2,计数器是正确的。但是,它只是不按降序排序。有什么想法吗?

谢谢!

最佳答案

虽然您使用 LinkedHashMap 应该会导致结果保持其顺序,但您实际上从未将 collect 操作的结果分配给 sortedTextSegmentList 。因此,您的 forEach 正在迭代您创建的第一个 map ,该 map 未按您想要的方式排序。

关于Java统计字符串出现次数并逆序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316340/

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