这篇文章主要讲解了“Java集合类之Map集合的特点及使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java集合类之Map集合的特点及使用方法是什么”吧!
java.util
接口 Map<K,V>
类型参数:
K - 此映射所维护的键的类型
V - 映射值的类型
public interface Map<K,V>
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如HashMap 类。
注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上equals 和 hashCode 方法的定义将不再是明确的。
方法 | 说明 |
---|---|
boolean equals(Object o) | 比较指定的对象与此映射是否相等 |
V get(Object key) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null |
V put(K key, V value) | 将指定的值与此映射中的指定键关联(可选操作) |
void clear() | 从此映射中移除所有映射关系(可选操作) |
boolean containsKey(Object key) | 如果此映射包含指定键的映射关系,则返回 true |
boolean containsValue(Object value) | 如果此映射将一个或多个键映射到指定值,则返回 true |
boolean isEmpty() | 如果此映射未包含键-值映射关系,则返回 true |
V get(Object key) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null |
Set keySet() | 返回此映射中包含的键的 Set 视图 |
Set<Map.Entry<K,V>> entrySet() | 返回此映射中包含的映射关系的 Set 视图 |
代码示例:
import java.util.*;
public class CollectionsDemo {
public static void main(String[] args) {
Map m1 = new HashMap();
m1.put("Zara", "8");
m1.put("Mahnaz", "31");
m1.put("Ayan", "12");
m1.put("Daisy", "14");
System.out.println();
System.out.println(" Map Elements");
System.out.print("\t" + m1);
}
}
package com.ithmm_01;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class MapDemo01 {
public static void main(String[] args) {
//创建集合对象
Map<String,String> map = new HashMap<String,String>();
//往集合添加元素
map.put("2101","zhangxiaohau");
map.put("2102","wangxiaoer");
map.put("2103","liuyidao");
//根据键删除对应元素
// System.out.println(map.remove("2102"));//wangxiaoer
// System.out.println(map.remove("2105"));//null
//移除所有键值对元素
//map.clear();//{}
// boolean containsKey(Object key)
// 如果此映射包含指定键的映射关系,则返回 true。
System.out.println(map.containsKey("2101"));//true
// boolean containsValue(Object value)
// 如果此映射将一个或多个键映射到指定值,则返回 true。
System.out.println(map.containsValue("liuyidao"));//true
//boolean isEmpty() |如果此映射未包含键-值映射关系,则返回 true。
System.out.println(map.isEmpty());//false
System.out.println(map.size());//3
// V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
System.out.println(map.get("2101"));//zhangxiaohau
System.out.println(map.get("2102")); //wangxiaoer
// Set keySet() 返回此映射中包含的键的 Set 视图。
System.out.println(map.keySet());//3[2103, 2102, 2101]
// Collection<V> values()
// 返回此映射中包含的值的 Collection 视图。
Collection<String> values = map.values();
for(String value : values){
System.out.println(value);//liuyidao wangxiaoer zhangxiaohau
}
//输出集合对象
System.out.println(map);//
}
}
总结:Map 接口中键和值一一映射. 可以通过键来获取值。
给定一个键和一个值,你可以将该值存储在一个 Map 对象。之后,你可以通过键来访问对应的值。
当访问的值不存在的时候,方法就会抛出一个 NoSuchElementException 异常。
当对象的类型和 Map 里元素类型不兼容的时候,就会抛出一个 ClassCastException 异常。
当在不允许使用 Null 对象的 Map 中使用 Null 对象,会抛出一个 NullPointerException 异常。
当尝试修改一个只读的 Map 时,会抛出一个 UnsupportedOperationException 异常。
方法一:
操作:
获取所有键的集合,用keySet()方法实现
遍历键的集合,获取到每一个键,用增强for实现
根据键去找值。用get(Object key)方法实现
代码示例:
package com.ithmm_01;
/**
* - 获取所有键的集合,用keySet()方法实现
* - 遍历键的集合,获取到每一个键,用增强for实现
* - 根据键去找值。用get(Object key)方法实现
*/
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapDemo02 {
public static void main(String[] args) {
//创建集合对象
Map<String, String> map = new HashMap<String, String>();
//往集合添加元素
map.put("2101", "zhangxiaohau");
map.put("2102", "wangxiaoer");
map.put("2103", "liuyidao");
//获取所有键的集合,用keySet()方法实现
Set<String> keySet = map.keySet();
//遍历键的集合,获取到每一个键,用增强for实现
for (String key :keySet){
// 根据键去找值。用get(Object key)方法实现
String value = map.get(key);
System.out.println(key + "," +value);
}
}
}
控制台输出:
2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau
方法二:
操作:
1.获取所有键值对对象的集合
Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。
2.遍历键值对对象的集合,得到每一个键值对对象
用增强for实现,得到每一个Map.Entry
3.根据键值对对象获取键和值
用getKey()方法得到键
用getValue()方法得到值
代码示例:
package com.ithmm_01;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapDemo03 {
public static void main(String[] args) {
//创建集合对象
Map<String, String> map = new HashMap<String, String>();
//往集合添加元素
map.put("2101", "zhangxiaohau");
map.put("2102", "wangxiaoer");
map.put("2103", "liuyidao");
//获取所有键值对对象的集合
Set<Map.Entry<String, String>> entrySet = map.entrySet();
//遍历键值对对象的集合,得到每一个键值对对象
//用增强for实现,得到每一个Map.Entry
for (Map.Entry<String, String> ss : entrySet) {
//根据键值对对象获取键和值
String key = ss.getKey();
String value = ss.getValue();
System.out.println(key + "," + value);
}
}
}
控制台输出:
2103,liuyidao
2102,wangxiaoer
2101,zhangxiaohau
感谢各位的阅读,以上就是“Java集合类之Map集合的特点及使用方法是什么”的内容了,经过本文的学习后,相信大家对Java集合类之Map集合的特点及使用方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。