gpt4 book ai didi

java - 查找列表中重复出现次数最多的 3 个对象 - Java

转载 作者:行者123 更新时间:2023-11-30 02:10:37 24 4
gpt4 key购买 nike

在处理一个项目时,我需要能够找到列表中前三个对象。

private List<Object> listOfObjects = new ArrayList<Object>();
listOfObjects.add(object1);
listOfObjects.add(object2);
listOfObjects.add(object2);
listOfObjects.add(object3);
listOfObjects.add(object3);
listOfObjects.add(object3);
listOfObjects.add(object4);

如何显示此列表中重复出现的前 3 个对象?我正在寻找的结果是这样的。

Your top results are:
object3
object2
object1

最佳答案

如果您使用的是 Java 8,则可以使用 Collectors.groupingBy 按出现次数对对象进行分组,如下所示:

Map<Object, Long> group = listOfObjects.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

要获得前三名,您可以使用:

group.entrySet().stream()
.sorted(Map.Entry.<Object, Long>comparingByValue().reversed())
.limit(3) // here you can use a variable for the number of the top object you want
.forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));

您必须@Override Object 类中的 equals 和 hashcode 方法。

<小时/>

我有一个简单的测试,我认为你的对象是一个字符串,例如:

List<Object> listOfObjects = new ArrayList<>();
listOfObjects.add("object1");
listOfObjects.add("object2");
listOfObjects.add("object2");
listOfObjects.add("object3");
listOfObjects.add("object3");
listOfObjects.add("object3");
listOfObjects.add("object4");

输出

object3 = 3
object2 = 2
object1 = 1

关于java - 查找列表中重复出现次数最多的 3 个对象 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50214198/

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