Secara umum, peta adalah struktur data yang terdiri dari pasangan nilai kunci, dan setiap kunci unik dalam set. Mari kita gunakan K dan V untuk mewakili kunci dan nilai untuk menggambarkan sembilan masalah utama tentang MAP di Java.
0. Konversi Peta ke Jenis Daftar
Di Java, antarmuka peta menyediakan tiga cara untuk mendapatkan koleksi: set kunci, set nilai, dan set nilai kunci. Mereka semua dapat dikonversi ke jenis daftar dengan konstruktor atau metode addall (). Kode berikut menunjukkan cara membuat daftar array dari peta:
// Key ListList keyList = ArrayList baru (MAP.KeySet ()); // Nilai ListList valuelist = ArrayList baru (MAP.VALUESET ()); // Key-Value ListList EntryList = New ArrayList (MAP.ENTRYSET ());
1. Melintasi peta melalui entri
Cara ini di Java ada sebagai pasangan nilai kunci disebut peta.Entry. Map.entryset () Mengembalikan koleksi nilai kunci, yang merupakan cara yang sangat efisien untuk melintasi.
untuk (entri entri: map.entryset ()) {// dapatkan keyk key = entry.getKey (); // Dapatkan nilai valuev = entry.getValue ();} Iterator juga sering digunakan, terutama sebelum JDK1.5
Iterator itr = map.entryset (). Iterator (); while (itr.hasnext ()) {entri entri = itr.next (); // Dapatkan keyk key = entry.getKey (); // dapatkan nilai valuev = entry.getValue ();} 2. Urutkan peta berdasarkan kunci
Penyortiran membutuhkan operasi yang sering pada Peta KE. Salah satu caranya adalah mengimplementasikannya melalui pembanding:
Daftar Daftar = ArrayList baru (MAP.ENTRYSET ()); collections.sort (daftar, pembanding baru () {@Overridepublic int perbandingan (entri e1, entri e2) {return e1.getKey (). Compareto (e2.getkey ());}}); Metode lain adalah menggunakan SortedMap, tetapi antarmuka yang sebanding harus diimplementasikan.
Sortedmap sortedmap = new treemap (pembanding baru () {@Overridepublic int perbandingan (k k1, k k2) {return k1.compareto (k2);}}); sortedmap.putAll (peta);3. Urutkan peta dengan nilai <br /> ini agak mirip dengan titik sebelumnya, kodenya adalah sebagai berikut:
Daftar Daftar = ArrayList baru (MAP.ENTRYSET ()); collections.sort (daftar, pembanding baru () {@Overridepublic int perbandingan (entri e1, entri e2) {return e1.getValue (). Compareto (e2.getValue ());}});4. Inisialisasi peta konstan statis
Ketika Anda ingin membuat peta statis global, kami memiliki dua cara, dan itu aman.
Di test1, meskipun kami menyatakan bahwa peta statis, kami masih dapat mengubah nilainya ketika diinisialisasi, seperti test1.map.put (3, "tiga");
Di test2, kami mengaturnya menjadi non-dimodifikasi melalui kelas dalam, jadi ketika kami menjalankan test2.map.put (3, "tiga"), itu akan melempar a
Pengecualian Exception yang tidak didukung melarang Anda memodifikasi. Public Class test1 {private static final Map Map; static {MAP = new HashMap (); Map.put (1, "One"); Map.put (2, "Two");}} Public Class test2 {private static peta peta final; peta statis {peta AMAP = new hashMap (); AMAP.put (1, "One"); AMAP. Collections.unmodifiblemap (AMAP);}} 5. Perbedaan antara hashmap, treemap, dan hashtable
Di antarmuka peta, ada tiga implementasi: hashmap, treemap, dan hashtable.
Mereka berbeda. Untuk detailnya, silakan merujuk ke artikel "HashMap vs Treeemap vs Hashtable vs LinkedHashMap".
6. Kueri terbalik di peta
Setelah kami menambahkan pasangan nilai kunci ke peta, itu berarti bahwa di peta, kunci dan nilainya sesuai dengan satu, dan kunci sesuai dengan nilai. Tetapi kadang -kadang kita perlu membalikkan kueri, seperti mencari kunci melalui nilai tertentu. Struktur data ini disebut peta bididirectional. Sayangnya, JDK tidak mendukungnya.
Apache dan Guava bersama -sama menyediakan implementasi peta dua arah ini, di mana ia menetapkan bahwa baik kunci dan nilai harus berupa hubungan 1: 1.
7. Menyalin peta
Java menyediakan banyak metode yang dapat mewujudkan replikasi peta, tetapi metode tersebut mungkin tidak disinkronkan kapan saja. Sederhananya, itu adalah perubahan yang terjadi di peta, dan yang disalin tetap sama. Berikut adalah metode implementasi yang relatif efisien:
Peta copiedmap = collections.synchronizedMap (peta);
Tentu saja ada metode lain, yang mengkloning. Tetapi pencetus Java kami Josh Bloch tidak merekomendasikan metode ini. Dia pernah mengatakan dalam sebuah wawancara tentang kloning peta: Metode kloning disediakan di banyak kelas karena orang memang membutuhkannya. Namun, kloning sangat terbatas dan sering menyebabkan dampak yang tidak perlu. (Teks Asli "Salin Konstruktor versus Kloning")
8. Buat peta kosong
Jika peta ini diatur ke tidak tersedia, itu dapat diimplementasikan dengan berikut ini
peta = collections.emptymap ();
Sebaliknya, ketika kita bisa menggunakannya, kita bisa
peta = hashmap baru ();
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.