Как получить значения. ключи от HashMap?
Я пишу простой текстовый текст в Java. Когда пользователь откроет файл, откроется в JTabbedPane
. Чтобы получить файл из него. Я сделал, чтобы сохранить открытые файлы.
HashMap<String, Tab> hash = new HashMap<String,Tab>();
Где:
Tab
получит значения, такие как: File file, JTextArea container, JTabbedPane tab
У меня есть класс под названием Tab:
public Tab(File file, JTextArea container, JTabbedPane tab)
{
this.file = file;
this.container = container;
this.tab = tab;
tab.add(file.getName(), container);
readFile();
}
Теперь, в этом классе SaveFile, мне нужно получить значения, хранящиеся в HashTab, чтобы сохранить файл. Как я это делаю?
Ответы
Ответ 1
Чтобы получить все значения из карты:
for (Tab tab : hash.values()) {
// do something with tab
}
Чтобы получить все записи с карты:
for ( Map.Entry<String, Tab> entry : hash.entrySet()) {
String key = entry.getKey();
Tab tab = entry.getValue();
// do something with key and/or tab
}
Обновление Java 8:
Для обработки всех значений:
hash.values().forEach(tab -> /* do something with tab */);
Для обработки всех записей:
hash.forEach((key, tab) -> /* do something with key and tab */);
Ответ 2
Вы даете 1 доллар, это дает вам бургер с сыром. Вы даете строку, и она дает вам вкладку. Используйте метод GET для HashMap, чтобы получить то, что вы хотите.
HashMap.get("String");
Ответ 3
Map
внутренне состоит из объектов Map.Entry
. Каждый Entry
содержит key
и value
. Чтобы получить ключ и значение из записи, вы используете методы доступа и модификатора.
Если вы хотите получить values
с данным key
, используйте метод get()
и чтобы вставить значение, используйте метод put()
.
#Define and initialize map;
Map map = new HashMap();
map.put("USA",1)
map.put("Japan",3)
map.put("China",2)
map.put("India",5)
map.put("Germany",4)
map.get("Germany") // returns 4
Если вы хотите получить набор ключей с карты, вы можете использовать метод keySet()
Set keys = map.keySet();
System.out.println("All keys are: " + keys);
// To get all key: value
for(String key: keys){
System.out.println(key + ": " + map.get(key));
}
Как правило, Чтобы получить все ключи и значения с карты, вы должны следовать последовательности в следующем порядке:
- Преобразуйте
Hashmap
в MapSet
, чтобы получить набор записей в Map
с помощью метода entryset()
.:
Set st = map.entrySet();
- Получить итератор этого набора:
Iterator it = st.iterator();
- Получить
Map.Entry
из итератора:
Map.Entry entry = it.next();
- используйте
getKey()
и getValue()
методы Map.Entry
для получения ключей и значений.
// Now access it
Set st = (Set) map.entrySet();
Iterator it = st.iterator();
while(it.hasNext()){
Map.Entry entry = mapIterator.next();
System.out.print(entry.getKey() + " : " + entry.getValue());
}
Короче говоря, используйте итератор непосредственно для
for(Map.Entry entry:map.entrySet()){
System.out.print(entry.getKey() + " : " + entry.getValue());
}
Ответ 4
Вы можете использовать итератор для этого:
Для клавиш:
for (Iterator <tab> itr= hash.keySet().iterator(); itr.hasNext();) {
// use itr.next() to get the key value
}
Итератор можно использовать аналогично значениям.
Ответ 5
Используйте клавишу "строка" хэш-карты, чтобы получить доступ к ее значению, которое является вашим классом вкладок.
Tab mytab = hash.get("your_string_key_used_to_insert");
Ответ 6
Вы должны следовать следующей последовательности слов:
- Преобразуйте
Map
в MapSet
с помощью map.entrySet();
- Получить итератор с
Mapset.iterator();
- Получить
Map.Entry
с помощью iterator.next();
- используйте
Entry.getKey()
и Entry.getValue()
# define Map
for (Map.Entry entry: map.entrySet)
System.out.println(entry.getKey() + entry.getValue);
Ответ 7
С java8 потоковым API:
List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
Ответ 8
for (Map.Entry<String, Tab> entry : hash.entrySet()) {
String key = entry.getKey();
Tab tab = entry.getValue();
// do something with key and/or tab
}
Работает как шарм.