Heim > Java > javaLernprogramm > Hauptteil

So verwenden Sie Map in der Java-Sammlungsklasse

WBOY
Freigeben: 2023-05-05 11:43:06
nach vorne
1228 Leute haben es durchsucht

1.Einführung in die Kartenschnittstelle

Karte wird zum Speichern von Daten mit Zuordnungsbeziehungen verwendet: Schlüssel - Wert

Für Set ist die unterste Ebene tatsächlich immer noch eine Karte. aber Set Wählen Sie, Value nicht zu verwenden, das heißt, der Value-Wert von Set ist immer eine Konstante

Der Schlüssel und der Wert in Map können beliebige Datentypen sein und werden in das HashMap$Node-Objekt gekapselt

#🎜 🎜#Der Schlüssel in der Karte kann nicht wiederholt werden, aber der Wert kann wiederholt werden. Wenn derselbe Schlüssel vorhanden ist, werden die entsprechenden und Ersetzungsvorgänge ausgeführt

2.Map-Schnittstelle Analyse

Speicherkartenschlüssel Das Wertepaar befindet sich in HashMap$Node

tab[i] = newNode(hash, key, value, null);

--

Node<K,V> newNode(int hash, K key, V value, Node<K,V> next) {
    return new Node<>(hash, key, value, next);
}
Nach dem Login kopieren

Was ist also der Datentyp dieses Node-Knotens?

Werfen wir einen Blick auf den Quellcode: (Er implementiert auch die Entry-Schnittstelle)

static class Node<K,V> implements Map.Entry<K,V> {
    final int hash;  // 存放hash值
    final K key;  // 存放key值
    V value;  // 存放Value值
    Node<K,V> next;  // 存放下一个个节点,以形成链表结构
}
Nach dem Login kopieren

k-v Um dem Programmierer das Durchlaufen zu erleichtern, wird auch eine EntrySet-Sammlung erstellt , der den Elementtyp „Eintrag“ speichert, und ein Eintragsobjekt enthält k, v, aber im Wesentlichen zeigt der k-v-Wert hier immer noch auf die Daten in einem Node-Knoten, das heißt, k-v speichert hier immer noch Adressdaten

// k-v存在有EntrySet的一个指向
Set set = map.entrySet();
System.out.println(set.getClass());
Nach dem Login kopieren
# 🎜🎜 #Ausgabe:

class java.util.HashMap$EntrySet

Wie spiegelt sich also diese Funktion wider, die das Durchqueren durch Programmierer erleichtert?

Der Grund dafür ist, dass Map.Entry zwei sehr wichtige Methoden bereitstellt: K getKey(); V getValue();. Wir können die Karte also auf folgende Weise durchqueren:

Set set = map.entrySet();
System.out.println(set.getClass());
for (Object obj : set) {
    Map.Entry entry = (Map.Entry) obj;
    System.out.println(entry.getKey());
    System.out.println(entry.getValue());
}
Nach dem Login kopieren

Wie kann man also beweisen, dass der in Eintrag gespeicherte k-v nur der Zeiger auf die Adresse ist? Ganz einfach

Durch das Debuggen werfen wir zunächst einen Blick auf die in der Karte gespeicherten Daten. Die Adresse des Schlüssels Nr. 2 lautet @727

#🎜🎜 ## 🎜🎜# Werfen wir einen Blick auf die Adresse des Schlüssels Nr. 2 im Set, die genau dieselbe ist:

So verwenden Sie Map in der Java-Sammlungsklasse

3.Kartenschnittstelle Methode

So verwenden Sie Map in der Java-SammlungsklasseCodebeispiel:

Map map = new HashMap();
// 添加键值对
map.put("no1","dahe");
map.put("no2","zhangsan");
// Key重复会进行替换
map.put("no1","lisi");
System.out.println(map);

// 根据键删除映射关系
map.remove("no1");
System.out.println(map);
// 根据key得到值
Object no2 = map.get("no2");
System.out.println(no2);
// 获取键值对数量
System.out.println(map.size());
// 判空
System.out.println(map.isEmpty());
// 清空
// map.clear();
// 查找键是否存在
System.out.println(map.containsKey("ok"));
Nach dem Login kopieren

4.Map-Traversal-Methode

Die erste Formel: Nehmen Sie alle Schlüssel heraus und erhalten Sie den entsprechenden Wert durch Schlüssel

// 取出所有的key,通过key取出对应的value
Set keySet = map.keySet();
for (Object o : keySet) {
    System.out.println(o);
    System.out.println(map.get(o));
}
Nach dem Login kopieren

Die zweite Formel: Nehmen Sie alle Wertwerte heraus

// 把所有的value值取出
Collection values = map.values();
for (Object value : values) {
    System.out.println(value);
}
Nach dem Login kopieren

Die dritte Formel: Erhalten Sie k-v durch EntrySet

// 通过EntrySet来获取 k-v
Set entrySet1 = map.entrySet();
for (Object o : entrySet1) {
    // 将entry 转成 Map.Entry
    Map.Entry m = (Map.Entry) o;
    System.out.println(m.getKey());
    System.out.println(m.getValue());
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Map in der Java-Sammlungsklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage