创建一个方法来检查Java中的通用HashMap中是否存在值?

创建一个方法来检查Java中的通用HashMap中是否存在值?,java,class,dictionary,generics,hashmap,Java,Class,Dictionary,Generics,Hashmap,我试图创建一个通用方法来检查HashMap中是否存在项。这个概念很简单,但Java不喜欢我正在尝试的东西。这可能吗?这是我的尝试 private static boolean inMap(String file, HashMap<String, Object> map) { for (Map.Entry<String, Object> entry : map.entrySet()) { if (entry.getKey().equals(file)

我试图创建一个通用方法来检查HashMap中是否存在项。这个概念很简单,但Java不喜欢我正在尝试的东西。这可能吗?这是我的尝试

private static boolean inMap(String file, HashMap<String, Object> map) {
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        if (entry.getKey().equals(file)) return true;
    }
    return false;
}
private静态布尔inMap(字符串文件、HashMap映射){
对于(Map.Entry:Map.entrySet()){
if(entry.getKey().equals(file))返回true;
}
返回false;
}
这在代码的以下部分中调用:

private static Map<String, String> files = new HashMap();
private static Map<String, BufferedImage> images = new HashMap();
private static Map<String, Texture> textures = new HashMap();
private static Map<String, Model> models = new HashMap();

public static TexturedModel loadOBJModel(String file) {
    if (inMap(file, files)) ...
}

public static Texture loadTexture(String file) {
    if (inMap(file, textures)) ...
}
private static Map files=new HashMap();
私有静态映射图像=新HashMap();
私有静态贴图纹理=新建HashMap();
私有静态映射模型=新HashMap();
公共静态TextureModel loadOBJModel(字符串文件){
如果(inMap(文件,文件))。。。
}
公共静态纹理loadTexture(字符串文件){
如果(inMap(文件、纹理))。。。
}
为了保存代码和简单性,我希望这个方法是通用的,因为我要检查4个不同的hashmap。它们都是
String
键,但如上所示,它们都是不同的值类型

如果有任何方法使这个通用,欢迎任何帮助

让我们利用这里,如果密钥不存在,它将返回null

public static boolean contains(Map<?, ?> inMap, Object key) {
    return inMap.get(key) == null;
}
公共静态布尔包含(映射inMap,对象键){
返回inMap.get(key)=null;
}
这还将利用hashmaps的O(1)访问时间,而不依赖O(n)循环项。

让我们利用这里,如果密钥不存在,它将返回null

public static boolean contains(Map<?, ?> inMap, Object key) {
    return inMap.get(key) == null;
}
公共静态布尔包含(映射inMap,对象键){
返回inMap.get(key)=null;
}

这还将利用HashMap的O(1)访问时间,而不依赖O(n)循环项。

您可以使用
T
type参数编写泛型方法,您可以将此方法用于所有不同类型的
HashMap

public static <T> boolean contains(String file, T a) {
    return a.keySet().contains(file); //or a.containsKey(file);

}
publicstaticboolean包含(字符串文件,ta){
返回a.keySet().contains(文件);//或a.containsKey(文件);
}

您可以使用
T
type参数编写泛型方法,您可以将此方法用于所有不同类型的
HashMap

public static <T> boolean contains(String file, T a) {
    return a.keySet().contains(file); //or a.containsKey(file);

}
publicstaticboolean包含(字符串文件,ta){
返回a.keySet().contains(文件);//或a.containsKey(文件);
}

你为什么要发明轮子<代码>地图有
containsKey()
,它能完全按照你的要求工作。

你为什么要重新发明轮子
Map
containsKey()
它可以完全按照您的需要运行。

为什么不能使用
files.containsKey('someStringKey')
其他人也是如此?@Raf post作为回答请回答这里已经有一个关于如何使用
Hashmap.containsKey()
看这里你真的想看看是否有钥匙吗?我读你问题的方式,我以为你在看映射是否包含值。为什么不能使用
files.containsKey('someStringKey')
其他人也是如此?@Raf post作为回答请回答这里已经有一个关于如何使用
Hashmap.containsKey()
看这里你真的想看看是否有钥匙吗?我读你的问题的方式,我以为你在看映射是否包含值。你不需要使用
.get()
containsKey()
就足够了,而且是
O(1)
完美的,谢谢。很好用@英国皇家空军发帖作为回答,甚至不知道这个存在。你不需要使用
.get()
containsKey()
就足够了,而且是
O(1)
完美的,谢谢。很好用@英国皇家空军发帖作为回答,甚至不知道这个存在。