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?
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
}
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 */);
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:
Hashmap
in MapSet
, um eine Reihe von Einträgen in Map
mit der entryset()
-Methode abzurufen:Set st = map.entrySet();
Iterator it = st.iterator();
Map.Entry
Vom Iterator:Map.Entry entry = it.next();
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());
}
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");
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.
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");
Mit der Java8-Streaming-API:
List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
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:
Map
in MapSet
mit map.entrySet();
Mapset.iterator();
Map.Entry
mit iterator.next();
Entry.getKey()
und Entry.getValue()
# define Map
for (Map.Entry entry: map.entrySet)
System.out.println(entry.getKey() + entry.getValue);
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.
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());
}