Map集合中獲取key-value值的實現(xiàn)方法
Map<K,V>集合是一種鍵值映射形式的集合。
當(dāng)調(diào)用put(K key,V value)方法把數(shù)據(jù)存到Map中后,如何把Map中的key值和value值取出來呢?
都有哪幾種取值的方法呢?下邊就來一一介紹。
一、前置準(zhǔn)備
以HashMap為例,先為map中存入幾個數(shù)據(jù),以便于后邊對map的取值遍歷。
package com.jinglan.list;
import java.util.HashMap;
public class Demo1 {
public static void main(String[] args) {
// 定義HashMap集合
HashMap<String, String> map = new HashMap<String, String>();
// 添加要存入集合的鍵值
map.put("apple", "蘋果");
map.put("banana", "香蕉");
map.put("orange", "橘子");
}
}
二、獲取Map的key-value值
獲取Map的key-value值分別有以下幾種方式,使用時可以根據(jù)不同的場景,選擇對應(yīng)的取值方式。
方法一
- 同時獲取Map中的key值和value值。
- 此方法通常在要遍歷展示這個map中所有的key和value
例如:
//調(diào)用entrySet方法,將獲取到的鍵值對存放進(jìn)Entry的Set集合
Set<Entry<String, String>> entrySet = map.entrySet();
//獲取Entry的Set集合的迭代器
Iterator<Entry<String, String>> it = entrySet.iterator();
//判斷迭代器中是否還有元素,如果有,則進(jìn)入循環(huán);如果沒有,則停止。
while(it.hasNext()) {
/*通過next()方法獲取迭代器中的元素,這里需要注意,每次循環(huán),只能調(diào)用一次
* next()方法,因為每調(diào)用一次next()方法就會獲取一個元素
* 例如,當(dāng)多次要調(diào)用這個entry對象時,可以先把it.next();獲取出來并用
* entry對象來接收一下
*/
Entry<String, String> entry = it.next();
//獲取到entry對象后,如果想要獲取key,可以調(diào)用getKey(),想要獲取value可以調(diào)用getValue()
System.out.println(entry.getKey()+" "+entry.getValue());
}
運行一下:
package com.jinglan.list;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
// 定義HashMap集合
HashMap<String, String> map = new HashMap<String, String>();
// 添加要存入集合的鍵值
map.put("apple", "蘋果");
map.put("banana", "香蕉");
map.put("orange", "橘子");
//調(diào)用entrySet方法,將獲取到的鍵值對存放進(jìn)Entry的Set集合
Set<Entry<String, String>> entrySet = map.entrySet();
//獲取Entry的Set集合的迭代器
Iterator<Entry<String, String>> it = entrySet.iterator();
//判斷迭代器中是否還有元素,如果有,則進(jìn)入循環(huán);如果沒有,則停止。
while(it.hasNext()) {
/*通過next()方法獲取迭代器中的元素,這里需要注意,每次循環(huán),只能調(diào)用一次
* next()方法,因為每調(diào)用一次next()方法就會獲取一個元素
* 例如,當(dāng)多次要調(diào)用這個entry對象時,可以先把it.next();獲取出來并用
* entry對象來接收一下
*/
Entry<String, String> entry = it.next();
//獲取到entry對象后,如果想要獲取key,可以調(diào)用getKey(),想要獲取value可以調(diào)用getValue()
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
運行結(jié)果:

方法二
- 獲取Map中的所有key值,以及通過key值獲取對應(yīng)的value值。
- 此方法可以用在一些需要判斷是否是指定key的情況下,獲取該key對應(yīng)的value。
例如:
//獲取所有key的Set集合
Set<String> keySet = map.keySet();
//獲取key的Set集合的迭代器
Iterator<String> it = keySet.iterator();
//判斷迭代器中是否還有元素,如果有,則進(jìn)入循環(huán);如果沒有,則停止。
while(it.hasNext()) {
/*通過next()方法獲取迭代器中的元素,這里需要注意,每次循環(huán),只能調(diào)用一次next()方法
* 因為每調(diào)用一次next()方法就會獲取一個元素,這里每調(diào)用一次,就會取出一個key
*/
String key = it.next();
System.out.println(key);
//如果想要獲取key對應(yīng)的value,也可以通過get()方法獲取對應(yīng)的value
System.out.println(key+" "+map.get(key));
}
運行一下:
package com.jinglan.list;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
// 定義HashMap集合
HashMap<String, String> map = new HashMap<String, String>();
// 添加要存入集合的鍵值
map.put("apple", "蘋果");
map.put("banana", "香蕉");
map.put("orange", "橘子");
//獲取所有key的Set集合
Set<String> keySet = map.keySet();
//獲取key的Set集合的迭代器
Iterator<String> it = keySet.iterator();
//判斷迭代器中是否還有元素,如果有,則進(jìn)入循環(huán);如果沒有,則停止。
while(it.hasNext()) {
/*通過next()方法獲取迭代器中的元素,這里需要注意,每次循環(huán),只能調(diào)用一次next()方法
* 因為每調(diào)用一次next()方法就會獲取一個元素,這里每調(diào)用一次,就會取出一個key
*/
String key = it.next();
System.out.println(key);
//如果想要獲取key對應(yīng)的value,也可以通過get()方法獲取對應(yīng)的value
System.out.println(key+" "+map.get(key));
}
}
}
運行結(jié)果:

方法三
獲取Map中的所有value值,此方法通常用于只想要展示或獲取所有的value值的情況
//獲取所有value的Collection集合
Collection<String> values = map.values();
//使用value的Collection集合的迭代器
Iterator<String> it = values.iterator();
//判斷迭代器中是否還有元素,如果有,則進(jìn)入循環(huán);如果沒有,則停止。
while(it.hasNext()) {
/*通過next()方法獲取迭代器中的元素,這里需要注意,每次循環(huán),只能調(diào)用一次next()方法
* 因為每調(diào)用一次next()方法就會獲取一個元素,這里每調(diào)用一次,就會取出一個value
*/
String value = it.next();
System.out.println(value);
}
運行一下:
package com.jinglan.list;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
// 定義HashMap集合
HashMap<String, String> map = new HashMap<String, String>();
// 添加要存入集合的鍵值
map.put("apple", "蘋果");
map.put("banana", "香蕉");
map.put("orange", "橘子");
//獲取所有value的Collection集合
Collection<String> values = map.values();
//使用value的Collection集合的迭代器
Iterator<String> it = values.iterator();
//判斷迭代器中是否還有元素,如果有,則進(jìn)入循環(huán);如果沒有,則停止。
while(it.hasNext()) {
/*通過next()方法獲取迭代器中的元素,這里需要注意,每次循環(huán),只能調(diào)用一次next()方法
* 因為每調(diào)用一次next()方法就會獲取一個元素,這里每調(diào)用一次,就會取出一個value
*/
String value = it.next();
System.out.println(value);
}
}
}
運行結(jié)果:

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決
這篇文章主要介紹了@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
JAVA 統(tǒng)計字符串中中文,英文,數(shù)字,空格,特殊字符的個數(shù)
這篇文章主要介紹了JAVA 統(tǒng)計字符串中中文,英文,數(shù)字,空格,特殊字符的個數(shù) ,本文通過一段代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
將ResultSet中得到的一行或多行結(jié)果集封裝成對象的實例
這篇文章主要介紹了將ResultSet中得到的一行或多行結(jié)果集封裝成對象的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
JFileChooser實現(xiàn)對選定文件夾內(nèi)圖片自動播放和暫停播放實例代碼
這篇文章主要介紹了JFileChooser實現(xiàn)對選定文件夾內(nèi)圖片自動播放和暫停播放實例代碼,需要的朋友可以參考下2017-04-04

