gpt4 book ai didi

Java - 如何将 List 类型传递给 HashMap?

转载 作者:行者123 更新时间:2023-12-01 19:59:21 26 4
gpt4 key购买 nike

我正在尝试创建一个方法 public static Object getMostOccurringObject(List<?> list)它应该返回给定列表中出现次数最多的对象,如果有多个出现次数最多的对象,则返回 null。

为了实现这一点,我需要使用一个 HashMap,其中列表中的对象作为键,该对象的频率作为值:HashMap<[type of list], Integer> .

这是我想出的:

public static <T> T getMostOccuringObject(List<T> list) {
HashMap<T, Integer> map = new HashMap<>();
for (T item : list) {
if (map.containsKey(item)) {
map.put(item, map.get(item) + 1);
} else {
map.put(item, 1);
}
}
int max = Collections.max(map.values());
if (Collections.frequency(map.values(), max) == 1) {
for (T object : map.keySet()) {
if (map.get(object).equals(max)) {
return object;
}
}
}
return null;
}

但我不确定这是否能达到我想要的效果。该代码确实可以编译。谁能帮我确认一下这是否有效,如果无效,我该如何使其有效?

最佳答案

通过使用通配符 ? 作为 Map 的键,将无法添加任何元素; Map#put 方法需要捕获类型,当您尝试向其中添加任何 Object 时,该方法将不会编译。相反,您可以使用通用的:

public static <T> T getMostOccuringObject(List<T> c) {
Map<T, Integer> frequency = new HashMap<>();
// rest of the code
}

关于Java - 如何将 List 类型传递给 HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509955/

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