Rumah >Java >javaTutorial >Cara menggunakan Map dalam kelas koleksi Java

Cara menggunakan Map dalam kelas koleksi Java

WBOY
WBOYke hadapan
2023-05-05 11:43:061243semak imbas

1. Pengenalan kepada antara muka Peta

Peta digunakan untuk menyimpan data dengan hubungan pemetaan: Kunci - Nilai

Untuk Set, lapisan bawah sebenarnya masih Peta, tetapi Set tidak memilih untuk menggunakan Nilai. Maksudnya, nilai Nilai Set sentiasa pemalar

Kunci dan Nilai dalam Peta boleh menjadi sebarang jenis data dan akan dirangkumkan ke dalam objek HashMap$Node

Kunci dalam Peta tidak boleh diulang Tetapi Nilai boleh diulang apabila terdapat Kunci, kesetaraan dan operasi penggantian

2 disimpan dalam 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);
}

Jadi apakah jenis data nod Nod ini?

Mari kita lihat kod sumber: (Ia juga melaksanakan antara muka Entry)

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 Untuk memudahkan traversal pengaturcara, koleksi EntrySet juga akan dibuat disimpan dalam koleksi ini ialah Entry, dan objek Entry mengandungi k, v, tetapi pada asasnya nilai k-v di sini masih menunjuk kepada data dalam nod Nod, iaitu k-v di sini masih menyimpan data alamat

// k-v存在有EntrySet的一个指向
Set set = map.entrySet();
System.out.println(set.getClass());

Output:

class java.util.HashMap$EntrySet

Jadi, bagaimanakah ciri ini yang memudahkan traversal pengaturcara ditunjukkan?

Alasannya ialah Map.Entry menyediakan dua kaedah yang sangat penting: K getKey();. Jadi kita boleh merentasi Peta dengan cara berikut:

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

Kemudian bagaimana untuk membuktikan bahawa k-v yang disimpan dalam Entri hanyalah penunjuk ke alamat? Sangat mudah

Melalui penyahpepijatan, mari kita lihat dahulu data yang disimpan dalam Peta Alamat kunci no2 ialah @727

Cara menggunakan Map dalam kelas koleksi Java Kemudian mari kita. lihat set Alamat kunci no2 adalah sama:

Cara menggunakan Map dalam kelas koleksi Java3.Kaedah antara muka peta

Contoh kod:

rreee

4.Kaedah lintasan peta

Formula pertama: keluarkan semua kunci, dan dapatkan nilai yang sepadan melalui kunci

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

Formula kedua: keluarkan semua nilai

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

Formula ketiga: melalui EntrySet untuk mendapatkan k-v

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

Atas ialah kandungan terperinci Cara menggunakan Map dalam kelas koleksi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam