是一个Java方法,它使用一个参数来接收HashMap<;字符串,整数>;和HashMap<;长整数>;可能的
我想创建一个方法,该方法将按键对HashMap进行排序。HashMap的键可以是String或Long。这两种HashMap类型的处理是相似的。为了避免代码重复,我想创建一个方法来处理这两种情况 方法的代码:是一个Java方法,它使用一个参数来接收HashMap<;字符串,整数>;和HashMap<;长整数>;可能的,java,hashmap,Java,Hashmap,我想创建一个方法,该方法将按键对HashMap进行排序。HashMap的键可以是String或Long。这两种HashMap类型的处理是相似的。为了避免代码重复,我想创建一个方法来处理这两种情况 方法的代码: static LinkedHashMap<Long, Integer> sortNumberHashMapByKey(HashMap<Long, Integer> map){ ArrayList<Long> keys = new Arra
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;
}
静态LinkedHashMap sortNumberHashMapByKey(HashMap映射){
ArrayList keys=新的ArrayList(map.keySet());
ArrayList values=新的ArrayList(map.values());
集合。排序(键);
集合。排序(值);
LinkedHashMap sortedMap=新LinkedHashMap();
for(整数值:值){
迭代器keyIt=keys.Iterator();
while(keyIt.hasNext()){
Long key=keyIt.next();
if(map.get(key).equals(value)){
keyIt.remove();
分类地图输入(键、值);
打破
}
}
}
返回分拣的DMAP;
}
有没有可能用一个参数创建一个Java方法,该参数可以同时接收
HashMap
和HashMap
类型的值?您可以引入一个T
,它需要实现compariable
,然后用T
替换Long
的任何用法:
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;
}
静态LinkedHashMap sortNumberHashMapByKey(HashMap映射){
ArrayList keys=新的ArrayList(map.keySet());
ArrayList values=新的ArrayList(map.values());
集合。排序(键);
集合。排序(值);
LinkedHashMap sortedMap=新LinkedHashMap();
for(整数值:值){
迭代器keyIt=keys.Iterator();
while(keyIt.hasNext()){
T key=keyIt.next();
if(map.get(key).equals(value)){
keyIt.remove();
分类地图输入(键、值);
打破
}
}
}
返回分拣的DMAP;
}
您可以在java中使用泛型
来定义一个适用于特定类型e.i.的方法。在您的情况下,Sting和Long(两者都具有可比性)代码将如下所示:
static <E extends Comparable<E>> LinkedHashMap<E, Integer> sortNumberHashMapByKey(HashMap<E, Integer> map){
ArrayList<E> keys = new ArrayList<>(map.keySet());
ArrayList<Integer> values = new ArrayList<>(map.values());
Collections.sort(keys);
Collections.sort(values);
LinkedHashMap<E, Integer> sortedMap = new LinkedHashMap<>();
for (Integer value : values) {
Iterator<E> keyIt = keys.iterator();
while (keyIt.hasNext()){
E key = keyIt.next();
if (map.get(key).equals(value)){
keyIt.remove();
sortedMap.put(key, value);
break;
}
}
}
return sortedMap;
}
静态LinkedHashMap sortNumberHashMapByKey(HashMap映射){
ArrayList keys=新的ArrayList(map.keySet());
ArrayList values=新的ArrayList(map.values());
集合。排序(键);
集合。排序(值);
LinkedHashMap sortedMap=新LinkedHashMap();
for(整数值:值){
迭代器keyIt=keys.Iterator();
while(keyIt.hasNext()){
E key=keyIt.next();
if(map.get(key).equals(value)){
keyIt.remove();
分类地图输入(键、值);
打破
}
}
}
返回分拣的DMAP;
}
这里的
是您希望传递给方法的类型。然后在代码中使用此类型的E
来执行String
和Long
所共有的操作。是的,您可以使用泛型