Rumah Java javaTutorial 关于java中Map的九大问题分析

关于java中Map的九大问题分析

Jan 19, 2017 am 10:38 AM
java map

通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的。下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题。
0、将Map转换为List类型
在java中Map接口提供了三种集合获取方式:Key set,,value set, and key-value set.。它们都可以通过构造方法或者addAll()方法来转换为List类型。下面代码就说明了如何从Map中构造ArrayList:

// key list
List keyList = new ArrayList(map.keySet());
// value list
List valueList = new ArrayList(map.valueSet());
// key-value list
List entryList = new ArrayList(map.entrySet());
Salin selepas log masuk

1、通过Entry 遍历Map
java中这种以键值对存在的方式被称为Map.Entry。Map.entrySet()返回的是一个key-value 集合,这是一种非常高效的遍历方式。

for(Entry entry: map.entrySet()) {
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
Salin selepas log masuk

Iterator 我们也经常用到,尤其是在JDK1.5以前

Iterator itr = map.entrySet().iterator();
while(itr.hasNext()) {
Entry entry = itr.next();
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
Salin selepas log masuk

2、通过Key来对Map排序
排序需要对Map的ke进行频繁的操作,一种方式就是通过比较器(comparator )来实现:

List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getKey().compareTo(e2.getKey());
}
});
Salin selepas log masuk

另外一种方法就是通过SortedMap,但必须要实现Comparable接口。

SortedMap sortedMap = new TreeMap(new Comparator() {
@Override
public int compare(K k1, K k2) {
return k1.compareTo(k2);
}
});
sortedMap.putAll(map);
Salin selepas log masuk

3、对value对Map进行排序
这与上一点有些类似,代码如下:

List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
Salin selepas log masuk

4、初始化一个static 的常量Map

当你希望创建一个全局静态Map的时候,我们有以下两种方式,而且是线程安全的。
而在Test1中,我们虽然声明了map是静态的,但是在初始化时,我们依然可以改变它的值,就像Test1.map.put(3,"three");
在Test2中,我们通过一个内部类,将其设置为不可修改,那么当我们运行Test2.map.put(3,"three")的时候,它就会抛出一个

UnsupportedOperationException 异常来禁止你修改。
 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 final Map map;
static {
Map aMap = new HashMap();
aMap.put(1, "one");
aMap.put(2, "two");
map = Collections.unmodifiableMap(aMap);
}
}
Salin selepas log masuk

5、HashMap, TreeMap, and Hashtable之间的不同
在Map接口中,共有三种实现:HashMap,TreeMap,Hashtable。
它们之间各有不同,详细内容请参考《 HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap》一文。

6、Map中的反向查询
我们在Map添加一个键值对后,意味着这在Map中键和值是一一对应的,一个键就是对应一个值。但是有时候我们需要反向查询,比如通过某一个值来查找它的键,这种数据结构被称为bidirectional map,遗憾的是JDK并没有对其支持。
Apache和Guava 共同提供了这种bidirectional map实现,它在实现中它规定了键和值都是必须是1:1的关系。

7、对Map的复制
java中提供了很多方法都可以实现对一个Map的复制,但是那些方法不见得会时时同步。简单说,就是一个Map发生的变化,而复制的那个依然保持原样。下面是一个比较高效的实现方法:
 Map copiedMap = Collections.synchronizedMap(map);
当然还有另外一个方法,那就是克隆。但是我们的java鼻祖Josh Bloch却不推荐这种方式,他曾经在一次访谈中说过关于Map克隆的问题:在很多类中都提供了克隆的方法,因为人们确实需要。但是克隆非常有局限性,而且在很多时候造成了不必要的影响。
8、创建一个空的Map
如果这个map被置为不可用,可以通过以下实现
 map = Collections.emptyMap();
相反,我们会用到的时候,就可以直接
 map = new HashMap();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多关于java中Map的九大问题分析相关文章请关注PHP中文网!


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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pengoptimuman prestasi Peta Java didedahkan: Jadikan operasi data anda lebih pantas dan cekap Pengoptimuman prestasi Peta Java didedahkan: Jadikan operasi data anda lebih pantas dan cekap Feb 20, 2024 am 08:31 AM

JavaMap ialah struktur data yang biasa digunakan dalam perpustakaan standard Java, yang menyimpan data dalam bentuk pasangan nilai kunci. Prestasi Map adalah penting untuk kecekapan menjalankan aplikasi Jika prestasi Map adalah lemah, ia boleh menyebabkan aplikasi berjalan perlahan atau ranap. 1. Pilih pelaksanaan Peta yang sesuai Java menyediakan pelbagai pelaksanaan Peta, termasuk HashMap, TreeMap dan LinkedHashMap. Setiap pelaksanaan Peta mempunyai kelebihan dan keburukan tersendiri Apabila memilih pelaksanaan Peta, anda perlu memilih pelaksanaan yang sesuai berdasarkan keperluan khusus aplikasi. HashMap: HashMap ialah pelaksanaan Peta yang paling biasa digunakan Ia menggunakan jadual cincang untuk menyimpan data dan mempunyai kelajuan pemasukan, pemadaman dan carian yang lebih pantas.

Peta Java Didedahkan: Petua dan Strategi untuk Capaian Data Pantas Peta Java Didedahkan: Petua dan Strategi untuk Capaian Data Pantas Feb 19, 2024 pm 06:21 PM

JavaMap ialah struktur data berasaskan pasangan nilai kunci yang membolehkan pembangun menyimpan dan mendapatkan semula data dengan cepat. Kekunci Peta boleh berupa sebarang objek, dan nilainya boleh berupa sebarang jenis data. Setiap kunci dalam Peta hanya boleh dikaitkan dengan paling banyak satu nilai Jika berbilang nilai ditetapkan untuk kunci yang sama, hanya nilai set terakhir akan dikekalkan. Terdapat dua pelaksanaan utama Map: HashMap: menggunakan jadual hash untuk menyimpan pasangan nilai kunci. Prestasi HashMap bergantung pada cara jadual cincang dilaksanakan dan dalam kebanyakan kes HashMap berprestasi lebih baik daripada TreeMap. TreeMap: menggunakan pokok merah-hitam untuk menyimpan pasangan nilai kunci. Prestasi TreeMap adalah serupa dengan HashMap, tetapi dalam beberapa kes, prestasi TreeMap boleh

Kuasai intipati Peta Java, kemahiran yang diperlukan untuk pelajar lanjutan Kuasai intipati Peta Java, kemahiran yang diperlukan untuk pelajar lanjutan Feb 19, 2024 pm 06:00 PM

JavaMap ialah struktur data yang membolehkan anda menyimpan dan mendapatkan semula nilai menggunakan kekunci. Kekunci dalam Peta adalah unik, yang bermaksud anda tidak boleh menyimpan dua nilai dengan kunci yang sama. Nilai dalam Peta boleh berupa sebarang objek, termasuk Peta lain. Peta mempunyai banyak kegunaan di Jawa. Contohnya, anda boleh menggunakan Peta untuk menyimpan ID pengguna dan kata laluan, ID produk dan harga, atau nama fail dan kandungan fail. Peta juga bagus untuk menyimpan tetapan konfigurasi dalam aplikasi. Terdapat tiga pelaksanaan Peta terbina dalam dalam Java: HashMap, TreeMap dan LinkedHashMap. HashMap ialah pelaksanaan Peta berdasarkan jadual cincang, dan ia merupakan pelaksanaan Peta yang paling banyak digunakan. TreeMap adalah berdasarkan

Sambungan dan penyesuaian Peta Java: Cipta struktur data anda sendiri untuk memenuhi keperluan penyesuaian anda Sambungan dan penyesuaian Peta Java: Cipta struktur data anda sendiri untuk memenuhi keperluan penyesuaian anda Feb 19, 2024 pm 09:50 PM

JavaMap ialah struktur data yang sangat berguna yang boleh digunakan dalam pelbagai senario aplikasi. Tetapi kadangkala, kami mungkin perlu memanjangkan atau menyesuaikan Peta untuk memenuhi keperluan khusus, seperti menambah fungsi baharu, menukar susunan traversal atau mencipta penyeri bersiri tersuai. Artikel ini akan memperkenalkan cara untuk melanjutkan dan menyesuaikan JavaMap untuk membantu anda mencipta struktur data anda sendiri untuk memenuhi keperluan penyesuaian anda. 1. Extend JavaMap Cara paling mudah untuk memanjangkan JavaMap ialah mencipta kelas baharu yang mewarisi daripada antara muka java.util.Map. Kelas baharu ini boleh menambah kaedah atau sifat baharu dan juga boleh mengatasi kaedah dalam antara muka Peta. Sebagai contoh, kita boleh mencipta kelas Peta baharu dan menambah kaedah baharu untuk mengira jumlah pasangan nilai kunci: publ

Menjelaskan Peta Java: Panduan mudah dan mudah difahami untuk merentasi Menjelaskan Peta Java: Panduan mudah dan mudah difahami untuk merentasi Feb 20, 2024 pm 12:00 PM

1. Peta Gambaran Keseluruhan ialah ahli rangka kerja pengumpulan Java, yang menyimpan elemen dalam bentuk pasangan nilai kunci, yang membolehkan mendapatkan semula dan pengubahsuaian data dengan pantas. Oleh kerana fungsinya yang berkuasa dan pelbagai aplikasi, menguasai kaedah traversal Peta merupakan kemahiran penting untuk pengaturcara Java. 2. Kaedah traversal Peta menyediakan pelbagai kaedah traversal Setiap kaedah mempunyai kelebihan dan kelemahan tersendiri dan boleh dipilih mengikut keperluan tertentu. 3.keySet() melintasi kaedah keySet() untuk mengembalikan koleksi semua kunci dalam Peta Anda boleh melintasi kekunci melalui iterator atau gelung untuk dipertingkatkan untuk mendapatkan nilai yang sepadan. //Gunakan keySet() untuk merentasi MapMapmap=newHashMap();map.

Kemahiran lanjutan Peta Java: Kuasai pengetahuan dingin yang anda mungkin tidak tahu dan tingkatkan kemahiran pengaturcaraan anda Kemahiran lanjutan Peta Java: Kuasai pengetahuan dingin yang anda mungkin tidak tahu dan tingkatkan kemahiran pengaturcaraan anda Feb 19, 2024 pm 12:33 PM

Gambaran keseluruhan antara muka Peta Antara muka Peta ialah struktur data yang digunakan untuk menyimpan pasangan nilai kunci dalam rangka kerja pengumpulan Java. Ia membolehkan anda menggunakan kunci untuk mencari dan mendapatkan semula nilai yang berkaitan. Antara muka Peta menyediakan banyak kaedah berguna, termasuk put(), get(), remove(), containsKey(), containsValue(), size(), isEmpty(), dsb. Pelaksanaan Peta Pelaksanaan Peta yang paling biasa digunakan dalam Java ialah HashMap dan TreeMap. HashMap ialah pelaksanaan Peta berasaskan jadual cincang yang mencari dan mendapatkan semula nilai dengan cepat dengan mengira nilai cincang kunci. TreeMap ialah pelaksanaan Peta berdasarkan pokok merah-hitam, yang menyusun kunci dalam tertib menaik atau menurun.

Peta Java dalam aplikasi perusahaan: Terokai peranannya yang berkuasa dalam projek sebenar Peta Java dalam aplikasi perusahaan: Terokai peranannya yang berkuasa dalam projek sebenar Feb 19, 2024 pm 01:27 PM

JavaMap ialah struktur data yang membolehkan anda menyimpan data menggunakan pasangan nilai kunci. Kekunci adalah unik manakala nilai boleh berupa sebarang jenis data. Peta boleh dilaksanakan dalam pelbagai cara, termasuk HashMap, TreeMap dan ConcurrentHashMap. Dalam aplikasi peringkat perusahaan, Peta boleh digunakan untuk pelbagai tujuan. Contohnya, anda boleh menggunakan Peta untuk: Menyimpan data pengguna seperti nama, alamat e-mel dan kata laluan. Simpan data produk seperti nama, harga dan perihalan. Simpan data pesanan seperti nama pelanggan, alamat dan barang yang dibeli. Menyimpan data cache, seperti halaman web yang dilawati baru-baru ini atau hasil pertanyaan pangkalan data. Peta sangat bagus untuk menyimpan struktur data yang kompleks. Sebagai contoh, anda boleh menggunakan Ma

Terokai daya tarikan Peta Java dan selesaikan masalah pemprosesan data Terokai daya tarikan Peta Java dan selesaikan masalah pemprosesan data Feb 19, 2024 pm 07:03 PM

Penjelasan Peta Peta ialah struktur data yang membolehkan anda menyimpan pasangan nilai kunci Kekunci adalah unik dan nilainya boleh menjadi apa-apa jenis objek. Antara muka Peta menyediakan kaedah untuk menyimpan dan mendapatkan semula pasangan nilai kunci, dan membolehkan anda melintasi pasangan nilai kunci dalam Peta. Jenis Peta Terdapat beberapa pelaksanaan Peta yang berbeza di Jawa, yang paling biasa ialah HashMap, TreeMap dan LinkedHashMap. HashMap: Pelaksanaan Peta berdasarkan jadual cincang, yang mempunyai ciri-ciri carian pantas, sisipan dan pemadaman, tetapi ia tidak tersusun, yang bermaksud bahawa susunan pasangan nilai kunci dalam Peta ditentukan secara sewenang-wenangnya. TreeMap: Pelaksanaan Peta berdasarkan pokok merah-hitam, dengan ciri-ciri carian pantas, sisipan dan pemadaman, dan ia dengan

See all articles