Heim >Java >javaLernprogramm >So verwenden Sie Map in der Java-Sammlungsklasse

So verwenden Sie Map in der Java-Sammlungsklasse

WBOY
WBOYnach vorne
2023-05-05 11:43:061263Durchsuche

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

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;  // 存放下一个个节点,以形成链表结构
}

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());
# 🎜🎜 #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());
}

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

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

Die zweite Formel: Nehmen Sie alle Wertwerte heraus

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen