Map 集合体系
1 特点 (Map是Map集合体系的根接口)
(1)键值对存储(key-value),一个键值对对应Map集合中的一个元素
(2)键 无序 无下标元素不允许重复
(3) 值 无序无下标 元素允许重复
-
常用方法:
(1) put(K key, V value):往Map集合中添加一个键值对, 如果map没有存在要添加key内容,直接添加,返回值为 null;但是如果添加的key在map中已经存在,则key对应的 新value替代原有value,被替代的value作为返回值返回。 【开发应用重点】
(2) V remove(K key):通过键删除Map中对应键值对,被删 除的value作为返回值返回。
(3) V get(K key):通过键(key)获取对应的value 【重点】
- int size():获取Map中键值对的个数
(5) boolean containsKey(K key):判断Map集合中是否包含 某一个键,包含-true;不包含-false.
(6) boolean containsValue(V value):判断Map集合中是否 包含某一个值,包含-true;不包含-false.
-
实现类:HashMap
注意:如果自定类型的对象作为HashMap的键,为了保证元 素不重复,则对象对应的类需覆盖 hashCode和equals方 法。但是为了提高检索的效率,开发时通常使用 String/Integer(例如String的用户名或是Integer的id)作为 HashMap的键。
(1) HashMap:JDK1.2版本,线程不安全,运行效率较快; 允许 null作 键和值。
(2) LinkedHashMap:是HashMap的子类,按照元素添加的 顺序操作集 合元素。
(3) Hashtable:JDK1.0版本,线程安全,运行效率较慢,不允许null作为键和值。
(4) Properties是Hashtable的子类,要求key和value是 String类型;
应用场景:加载配置文件时应用。
(5) TreeMap:是SortedMap的实现类,SortedMap是Map 的子接口; 对Map中的键根据内容完成排序。
-
遍历方式 (1) 键遍历:通过 Map中的keySet方法获取map集合中所有 的键【重点】
//创建Map 对象
Map <T> map=new HashMap<>();
Set <k> ks=map.keySet();//获取Map中所有键
//通过遍历Set集合ks获取每一个键
for(K key:ks){
//通过每一个键获取对应的值
V value =map.get(key);
//通过key和value 操作键和值的内容
}
(2)值遍历 通过Map 中values 方法获取map集合中所有值
//创建Map 对象
Map <T> map=new HashMap<>();
Collcetion <V> vs =new map.values();
// 通过遍历Collection 集合vs 获取每一个值
for(V value:vs){
// 通过value 操作 集合中每一个值
}
//注意:Map没有方法 通过 值 获取对应的键
(3) 键值对遍历:通过Map中的entrySet方法获取Map中所有 键值对
//创建Map 对象
Map <T> map=new HashMap<>();
Set<Map.Entry<K,v>> kvs= map.entrySet();//获取所有键值对
// 通过 遍历 Set集合 kvs获取每一个键值对
for( Map.Entry<k,v> kv :kvs){
K key =kv.getKey();//获取键
V value=kv.getValue();//获取值
// 通过key 和value 操作键和值
}
示例代码
public class TestHashMap {
public static void main(String[] args) {
/* 学号 姓名
* key(唯一) value(不唯一)
通过输出学生信息 看三个遍历
*/
Map<Integer,String> map=new HashMap<>();
map.put(1515037,"流云");
map.put(1515035,"黄朝");
map.put(1515034,"流云");
map.put(1515007,"南宫寒");
// 通过 Map中的 keySet方法获取 Map集合中所有的键,将所有的键存储在 Set集合中,作为返回值返回
// ``````````键遍历```````````
Set<Integer> ks= map.keySet();
for(Integer key:ks){
// 通过键 获取值
String value = map.get(key);
System.out.println(key+" "+value);
}
//`````````值遍历````````````
Collection <String> vs =map.values();
for(String value:vs){
System.out.println(value)
}
//~~~~~~~~~···键值对遍历··········
// 获取map 中所有键值对
Set<Map.Entry<Integer,String>>kvs =map.entrySet();
for(Map.Entey<Integer,String> kv:kvs){
// 通过 Entry获取 键
Integer key= kv.getKey();//获取键
String value= kv.getValue();// 获取值
System.out.println(key+"-"+value);
}
}
}
不足之处还请各位看官海涵 指正。
谢谢观看