Как сказал Джейкоб Г. , вы должны использовать Set<E>
.
Набор - это просто коллекция, которая не содержит дубликатов. Реализующий класс HashSet<E>
фактически использует HashMap<K,V>
под капотом, как упомянуто Ole VV , но использование Set<E>
в вашем коде является лучшим подходом IMO, потому что Ваша проблема не требует значений.
Кроме того, существует проблема с использованием HashMap<K,V>
, где все ваши значения null
в методе 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!
Итак, для вашей конкретной проблемы я бы попробовал что-то вроде этого!
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);
}