java - 有没有办法对整数数组进行排序并对另一个字符串数组进行相同的更改
问题描述
我正在做一个学校项目,而不是让我制作一个程序,而不是用一个字符串计算字符串中所有单词出现的次数。通过制作数组,我设法做到了这一点。一个数组是字符串数组,它保存单词,另一个整数数组保存单词出现的次数。一个特定的单词及其出现的次数在两个数组中具有相同的元素编号。
但我的问题是按降序对它们进行排序,起初我认为我可以通过使用这行代码来做到这一点:
Arrays.sort(thenumbers, Collections.reverseOrder());
但我意识到这会对单词出现的次数进行排序,但这会破坏整个程序,因为单词和数字在数组中会有不同的元素编号。
有没有办法来解决这个问题?
任何帮助将不胜感激,谢谢!
解决方案
您不必制作 2 个单独的数组。使用流 API 查找每个单词在 String 中出现的次数是非常标准的解决方案:
import static java.util.stream.Collectors.*;
Map<String, Long> map = Arrays.stream(sourceString.split(" "))
.collect(groupingBy(Function.identity(), counting()))
这为您提供了一个以单词为键的地图,以及它作为值出现的次数。然后,您可以使用Sort a Map<Key, Value> by values中的任何解决方案按值对地图进行排序
推荐阅读
- javascript - http2 最大并发流
- asp.net-core - 使用 .net core 获取远程事件日志
- python-3.x - gcloud auth登录和python上传
- java - 如何在太多类之间传递值?
- python - 如何根据熊猫中特定行的值创建新列
- keras - 如何处理 ImageDataGenerator 生成的数据?
- asp.net - IIS 显示 iisstart 页面而不是我的应用程序页面
- osgi - 如果安装了 Bundle 的多个版本,如何确定使用的是哪个版本?
- javascript - 如何获取 Javascript 中只有零的浮点数的小数位?
- python - 将 Tornado 应用程序部署到 AWS Lambda 时出错