如何创建使用Java泛型将映射键放入列表的方法? 公共列表map2list(地图地图){ List=newarraylist(map.keySet()); 退货清单; }

如何创建使用Java泛型将映射键放入列表的方法? 公共列表map2list(地图地图){ List=newarraylist(map.keySet()); 退货清单; },java,Java,我的方法是这样的。。。但它不起作用。可能您的地图是空的,因为下面的示例起作用: public <T> List<T> map2list(Map<T, T> map){ List<T> list = new ArrayList<T>(map.keySet()); return list; } 公共类Utils{ 公共列表map2list(地图地图){ List=newarraylist(map.keySet());

我的方法是这样的。。。但它不起作用。

可能您的地图是空的,因为下面的示例起作用:

public <T> List<T> map2list(Map<T, T> map){

    List<T> list = new ArrayList<T>(map.keySet());
    return list;

}
公共类Utils{
公共列表map2list(地图地图){
List=newarraylist(map.keySet());
退货清单;
}
/**
*@param args
*/
公共静态void main(字符串[]args){
Map Map=newhashmap();
map.put(“test1”,1);
地图放置(“测试2”,2);
地图放置(“test3”,3);
Utils t=新Utils();
列表结果=t.map2list(地图);
for(字符串键:结果){
系统输出打印项次(键);
}
}
}
打印以下内容:

测试2
测试3
测试1


如果参数中的map的键为
String
Integer
为value,请尝试以下方法

public class Utils {

    public <T, K> List<T> map2list(Map<T, K> map) {
        List<T> list = new ArrayList<T>(map.keySet());
        return list;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("test1", 1);
        map.put("test2", 2);
        map.put("test3", 3);
        Utils t = new Utils();
        List<String> result = t.map2list(map);
        for (String key : result) {
            System.out.println(key);
        }
    }

}
公共静态列表map2list(映射映射){
List=newarraylist(map.keySet());
退货清单;
}
仅为地图的运行时类型定义一种类型。因此,如果映射的泛型具有不同类型的参数,则可以通过定义两个泛型类型T和例如K来更改它:

public static <T, L> List<T> map2list (Map<T, L> map) {  
     List<T> list = new ArrayList<T>(map.keySet());  
     return list;  
}
公共静态列表map2list(地图地图){
List=newarraylist(map.keySet());
退货清单;
}
它会起作用的

这种情况也支持如果您想通过
Map
或通常也通过
Map


希望这会有所帮助。

Map Map=newhashmap();map.put(“test1”,1);地图放置(“测试2”,2);地图放置(“test3”,3);Utils t=新Utils();列表结果=t.map2list(地图);对于(String key:result){System.out.println(key);}根据您的注释将其作为无状态实用程序类方法修复,
map2list
应该是
static
;这个方法不起作用……嗯,是的,你怎么期望
T
同时是一个字符串和一个整数呢?不客气。在本网站中,您通常可以通过勾选所需答案左侧的绿色复选标记来勾选答案作为问题的答案。
public static <T,K> List<T> map2list(Map<T, K> map){
    List<T> list = new ArrayList<T>(map.keySet());
    return list;
}