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

Cara menggunakan Map dalam kelas koleksi Java

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-05-05 11:43:06
ke hadapan
1302 orang telah melayarinya

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);
}
Salin selepas log masuk

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

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());
Salin selepas log masuk

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());
}
Salin selepas log masuk

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"));
Salin selepas log masuk

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));
}
Salin selepas log masuk

Formula ketiga: melalui EntrySet untuk mendapatkan k-v

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

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

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan