web-dev-qa-db-de.com

Wie bekomme ich Werte und Schlüssel von HashMap?

Ich schreibe einen einfachen Bearbeitungstext in Java. Wenn der Benutzer es öffnet, wird eine Datei in JTabbedPane geöffnet. Ich habe Folgendes getan, um die geöffneten Dateien zu speichern:

HashMap<String, Tab> hash = new HashMap<String, Tab>();

Wobei Tab die Werte erhält, wie zum Beispiel: File file, JTextArea container, JTabbedPane tab.

Ich habe eine Klasse namens Tab:

public Tab(File file, JTextArea container, JTabbedPane tab)
{
    this.file = file;
    this.container = container;
    this.tab = tab;
    tab.add(file.getName(), container);
    readFile();
}

In dieser SaveFile-Klasse muss ich die Tab-Werte abrufen, die in der HashMap gespeichert sind. Wie kann ich das machen?

32
user2279895

Um alle Werte von einer Karte zu erhalten:

for (Tab tab : hash.values()) {
    // do something with tab
}

Um alle Einträge von einer Karte zu erhalten:

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 Update:

Um alle Werte zu verarbeiten:

hash.values().forEach(tab -> /* do something with tab */);

Um alle Einträge zu bearbeiten:

hash.forEach((key, tab) -> /* do something with key and tab */);
73
Bohemian

Map besteht intern aus Map.Entry - Objekten. Jedes Entry enthält key und value. Um Schlüssel und Wert aus dem Eintrag zu erhalten, verwenden Sie Accessor- und Modifikatormethoden.

Wenn Sie values mit der angegebenen key erhalten möchten, verwenden Sie die get() -Methode und zum Einfügen eines Werts die put() -Methode.

#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

Wenn Sie den Schlüsselsatz von der Karte erhalten möchten, können Sie die Methode keySet() verwenden

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));
}

Im Allgemeinen müssen Sie die Reihenfolge in der folgenden Reihenfolge einhalten, um alle Schlüssel und Werte aus der Karte zu erhalten:

  • Konvertieren Sie Hashmap in MapSet, um eine Reihe von Einträgen in Map mit der entryset() -Methode abzurufen:
    Set st = map.entrySet();
  • Holen Sie sich den Iterator dieser Menge:
    Iterator it = st.iterator();
  • Holen Sie sich Map.Entry Vom Iterator:
    Map.Entry entry = it.next();
  • verwenden Sie die Methoden getKey() und getValue() von Map.Entry, um Schlüssel und Werte abzurufen.
// 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());
}

Kurz gesagt, verwenden Sie den Iterator direkt in for

for(Map.Entry entry:map.entrySet()){
    System.out.print(entry.getKey() + " : " + entry.getValue());
}
24
Prabhu

Sie geben 1 Dollar, es gibt Ihnen einen Käseburger. Sie geben den String und es gibt Ihnen den Tab. Verwenden Sie die GET-Methode von HashMap, um zu erhalten, was Sie möchten. 

HashMap.get("String");
12
user2245180

Sie könnten Iterator verwenden, um das zu tun: 

Für Schlüssel: 

for (Iterator <tab> itr= hash.keySet().iterator(); itr.hasNext();) {
    // use itr.next() to get the key value
}

Sie können den Iterator auf ähnliche Weise mit Werten verwenden. 

2
bruhhhhh

Verwenden Sie den 'string'-Schlüssel der Hashmap, um auf den Wert zuzugreifen, der Ihre Tabulatorklasse ist.

Tab mytab = hash.get("your_string_key_used_to_insert");
1
vishakvkt

Mit der Java8-Streaming-API:

List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
1
javabrew

Es funktioniert mit hash.get ("key"); Wobei der Schlüssel der Schlüssel ist, um den Wert von Map zu erhalten

Sie müssen die folgende Reihenfolge der Operationen einhalten:

  • Konvertieren Sie Map in MapSet mit map.entrySet();
  • Holen Sie sich den Iterator mit Mapset.iterator();
  • Bekommen Sie Map.Entry mit iterator.next();
  • benutze Entry.getKey() und Entry.getValue()
# define Map
for (Map.Entry entry: map.entrySet)
    System.out.println(entry.getKey() + entry.getValue);
0
Hary Bakta
for (Map.Entry<String, Tab> entry : hash.entrySet()) {
    String key = entry.getKey();
    Tab tab = entry.getValue();
    // do something with key and/or tab
}

Klappt wunderbar.

0
Gama_aide

Um Werte und Schlüssel zu erhalten Können Sie einfach die Methoden values ​​() und keySet () von HashMap verwenden 

public static List getValues(Map map) {
    return new ArrayList(map.values());
}

public static List getKeys(Map map) {
    return new ArrayList(map.keySet());
}
0
Andriy