我可以声明HashMap <key>而不是HashMap <key,value>吗?

时间:2019-03-08 01:58:52

标签: java hashmap

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

话虽如此,有没有一种方法可以声明HashMap<key>而不是HashMap<key,arbitraryValue>,所以我不必添加不必要的null值?抱歉,这可能是一个愚蠢的问题。

1 个答案:

答案 0 :(得分:0)

正如Jacob G.所说,您应该使用Set<E>

集合只是一个不包含任何重复项的集合。如HashSet<E>所述,实现类Ole V.V.实际上在幕后使用HashMap<K,V>,但是在代码中使用Set<E>是IMO更好的方法,因为您的问题确实不需要这些值。

此外,在HashMap<K,V>方法中使用所有值均为null的{​​{1}}存在问题。如果请求的get(K key)没有关联的值,则此方法将返回null。那么,如何知道您对key的调用返回的是有效的还是无效的get?即

null

因此,对于您的特定问题,我会尝试类似的方法!

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!