gpt4 book ai didi

java - Java 方法是否可以使用单个参数来接收 HashMap 和 HashMap 的值?

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

我想创建一个按键对 HashMap 进行排序的方法。 HashMap 的键可以是 String 或 Long。两种HashMap类型的处理是类似的。为了避免代码重复,我想创建一个方法来处理这两种情况。

该方法的代码:

static LinkedHashMap<Long, Integer> sortNumberHashMapByKey(HashMap<Long, Integer> map){
ArrayList<Long> keys = new ArrayList<>(map.keySet());
ArrayList<Integer> values = new ArrayList<>(map.values());
Collections.sort(keys);
Collections.sort(values);
LinkedHashMap<Long, Integer> sortedMap = new LinkedHashMap<>();

for (Integer value : values) {
Iterator<Long> keyIt = keys.iterator();
while (keyIt.hasNext()){
Long key = keyIt.next();
if (map.get(key).equals(value)){
keyIt.remove();
sortedMap.put(key, value);
break;
}
}
}
return sortedMap;
}

是否可以创建一个带有单个参数的 Java 方法,该方法可以接收 HashMap<String, Integer> 的值和HashMap<Long, Integer>类型?

最佳答案

您可以介绍一个T需要实现Comparable<T>然后替换 Long 的任何用法与 T :

static <T extends Comparable<T>> LinkedHashMap<T, Integer> sortNumberHashMapByKey(HashMap<T, Integer> map){
ArrayList<T> keys = new ArrayList<>(map.keySet());
ArrayList<Integer> values = new ArrayList<>(map.values());
Collections.sort(keys);
Collections.sort(values);
LinkedHashMap<T, Integer> sortedMap = new LinkedHashMap<>();

for (Integer value : values) {
Iterator<T> keyIt = keys.iterator();
while (keyIt.hasNext()){
T key = keyIt.next();
if (map.get(key).equals(value)){
keyIt.remove();
sortedMap.put(key, value);
break;
}
}
}
return sortedMap;
}

关于java - Java 方法是否可以使用单个参数来接收 HashMap<String, Integer> 和 HashMap<Long, Integer> 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59360834/

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