Rumah >Java >javaTutorial >Cara menggunakan Map dalam kelas koleksi Java
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
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$EntrySetJadi, 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
Kemudian mari kita. lihat set Alamat kunci no2 adalah sama:
3.Kaedah antara muka peta
4.Kaedah lintasan peta
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!