Java 我可以声明哈希映射吗<;键>;而不是HashMap<;键、值>;?

Java 我可以声明哈希映射吗<;键>;而不是HashMap<;键、值>;?,java,hashmap,Java,Hashmap,我正在尝试将键插入hashmap,但实际上不需要插入值。我可以,但他们不会被使用。我知道hashmaps可以接受空键和值,但只有一个空键,即值对。我可以map.put(key,null)将值设为null,但该方法似乎效率低下。我的意图是使用map.containsKey(key)方法来确定hashmap中是否存在键,这就是我不需要值的原因 话虽如此,有没有办法声明HashMap而不是HashMap,这样我就不必添加不必要的空值?抱歉,如果这是一个愚蠢的问题。如前所述,您应该使用 集合只是不包含任

我正在尝试将键插入hashmap,但实际上不需要插入值。我可以,但他们不会被使用。我知道hashmaps可以接受空键和值,但只有一个空键,即值对。我可以
map.put(key,null)
将值设为null,但该方法似乎效率低下。我的意图是使用
map.containsKey(key)
方法来确定hashmap中是否存在键,这就是我不需要值的原因

话虽如此,有没有办法声明
HashMap
而不是
HashMap
,这样我就不必添加不必要的空值?抱歉,如果这是一个愚蠢的问题。

如前所述,您应该使用

集合只是不包含任何重复项的集合。实现类实际上在引擎盖下使用了一个
HashMap
,如所述,但是在代码中使用
Set
是更好的方法,因为您的问题不需要这些值

此外,在
get(K键)
方法中使用所有值均为
null的
HashMap也有问题。如果请求的
没有关联值,此方法将返回
null
。那么,您如何知道对
get
的调用是否返回了有效或无效的
null
?i、 e

Map<Integer, Object> map = new HashMap<>();

// add entry 0 -> 
map.put(0, null);

Object get1 = map.get(0); // returns null, so 0 must be a key in our map!
Object get2 = map.get(1); // also returns null, so is 1 a key too? No!
Map Map=newhashmap();
//添加条目0->
map.put(0,null);
对象get1=map.get(0);//返回null,因此0必须是我们映射中的键!
Object get2=map.get(1);//也返回null,那么1也是键吗?不
所以,对于您的具体问题,我会尝试这样的方法

Set<MyKey> set = new HashSet<>(); // or any implementing class

...

MyKey someKey = ...

// Check if your key set doesn't have some key, if so add it to the key set
if (!set.contains(someKey)) {
  set.add(someKey);
}
Set Set=newhashset();//或任何实现类
...
MyKey someKey=。。。
//检查您的密钥集是否没有密钥,如果没有,请将其添加到密钥集
如果(!set.contains(someKey)){
set.add(someKey);
}

您要查找的数据类型称为
。如果不需要键值对,为什么需要
哈希映射?为什么不使用一个列表或集合呢?您应该使用的
HashSet
类是使用
HashMap
实现的,显然它并不像人们想象的那么低效。别担心,我认为谷歌可能有一个你可能会感兴趣的HashSet实现。