Получите перечисление (для ключей) карты (HashMap) в Java?

Насколько я понимаю это, кажется, что нет прямого способа добраться Enumeration непосредственно для Ключей a HashMap. Я могу только получить a keySet(). От этого Set, Я могу добраться Iterator но Iterator кажется, что-то другое, чем Enumeration.

Что является лучшим и большая часть производительного способа непосредственно добраться Enumeration от Ключей a HashMap?

Фон: Я реализую свой собственный ResourceBundle (=>getKeys() Метод), и я должен обеспечить/реализовать метод, который возвращает Перечисление всех Ключей. Но моя реализация основана на a HashMap таким образом, я должен так или иначе выяснить, как лучше всего преобразовать betweens эти два метода "Итератора/Перечислителя".

20
задан tashuhka 16 April 2014 в 13:36
поделиться

2 ответа

Apache Commons-Collections имеют адаптер, который делает ITERATOR , доступный для использования, такой как перечисление . Посмотрите на итераторность .

Адаптер для внесения экземпляра итератора, по-видимому, кажется, что экземпляры перечисления

, так что короче говоря следующие:

Enumeration enumeration = new IteratorEnumeration(hashMap.keySet().iterator());

в качестве альтернативы, если вы (по какой-то причине) не хотите включать коллекции Commons, вы можете Реализуйте этот адаптер самостоятельно. Легко - просто внести реализацию перечисления , проходят итератор в конструкторе, и всякий раз, когда оформлены () и NextElement () называются, вы называете HASNEXT () и следующий () на основе лечения итератора .

Используйте это, если вы вынуждены использовать перечисление некоторым договором API (поскольку я предполагаю, что случай). В противном случае используйте итератор - это рекомендуемая опция.

21
ответ дан 29 November 2019 в 22:49
поделиться

Я думаю, что вы можете использовать метод Перечисление из java.util.collections класс для достижения того, что вы хотите.

Документ API метода, перечисляя это:

Общественное средство перечисления (сбора C)
возвращает перечисление в течение указанного коллекции. Это обеспечивает взаимодействие с устаревшими API, которые требуют перечисления в качестве ввода.

Например, фрагмент следующего кода приведен экземпляр перечисления от ключей HASHMAP

 final Map <String,Integer> test = new HashMap<String,Integer>();
 test.put("one",1);
 test.put("two",2);
 test.put("three",3);
 final Enumeration<String> strEnum = Collections.enumeration(test.keySet());
 while(strEnum.hasMoreElements()) {
     System.out.println(strEnum.nextElement());
 }

и приводит к выводу:
один
два
три

42
ответ дан 29 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: