我想创建一个将按键对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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句