gpt4 book ai didi

java - 如何在JAVA中查找ArrayList中最少和最常见的名称

转载 作者:行者123 更新时间:2023-12-02 05:28:26 25 4
gpt4 key购买 nike

我无法在 ArrayList 中找到最常用和最不常用的名称。该公式应该遍历一个名称文件并计算列表中有多少个常见名称,然后打印其中最少和最常见的名称。我已经完成了大部分 ArrayList 部分,它只是找到我遇到麻烦的最常见和最不常见的名称。我什至不知道如何开始它。我尝试在网上查找但找不到任何名称。我有点试图弄清楚,但我能想到的就是使用 .equals。

for (int i = 0; i< dogs.size(); i++)
if dogs.get(0).getName().equals dogs.get(i).getName();
{

}

最佳答案

使用 Map 收集数据,然后使用 Collections API 查找最小值:

List<Dog> dogs; // populate
Map<String, Integer> counts = new HashMap<>();
for (Dog dog : dogs) {
Integer count = counts.get(dog.getName());
counts.put(dog.getName(), count == null ? 1 : count + 1);
}

List<Map.Entry<String, Integer>> entries = new ArrayList<>(counts.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return Integer.compare(o2.getValue(), o1.getValue()); // Note reverse order
}
});
String leastCommonName = entries.get(0).getKey();
int leastCommonFrequency = entries.get(0).getValue();
<小时/>

这是查找最少使用名称的 java 8 版本:

Map.Entry<String, Integer> min = counts.entrySet().stream()
.min((o1, o2) -> Integer.compare(o1.getValue(), o2.getValue())).get();

String leastCommonName = min.getKey();
int leastCommonFrequency = min.getValue();

基本上避免了列表创建和排序,取而代之的是使用相同比较器但作为 lambda 表达式从(条目)流中查找最小值的单行代码。

关于java - 如何在JAVA中查找ArrayList中最少和最常见的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779970/

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