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