集合框架__【Map集合】【keySet】【entrySet】【Map.Entry】

来源:互联网 发布:星际争霸2 mac 编辑:程序博客网 时间:2024/05/17 06:01


Map集合

该集合存储键值对,一对一对存储,而且要保证键的唯一性
1,添加。
put(K key, V value)当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回
putAll(Map<? extends K,? extends V> m) 
2,删除。
clear() 
remove(Object key) 
3,判断。
containsValue(Object value) 
containsKey(Object key) 
isEmpty() 
4,获取。
get(Object key)//可以通过get方法的返回值来判断一个件是否存在,是否为null
size() 
values() 
重点:
entrySet() 
keySet() 
Map的子类
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。在jdk1.0.版本出现,效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。用于替代hashtable,出现于jdk1.2.效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
Map类似于Set,Set底层就是使用了Map集合

常见操作示例

import java.util.*;class  MapDemo{public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {Map<String,String> map = new HashMap<String,String>();map.put("01","haha1");map.put("02","haha2");map.put("03","haha3");map.put("03","ha哈哈哈");//当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回sop("containsKey:"+map.containsKey("001"));//sop("remove: "+map.remove("02"));sop("get: "+map.get("020"));//没有则返回nullmap.put("04",null);sop("get: "+map.get("04"));//可以通过get方法的返回值来判断一个件是否存在,是否为nullsop(map);//获取map集合中所有的值}}

map集合两种取出方式:keySet和entrySet

1,keySet:将map集合转成set集合再通过迭代器取出

————即:将map中所有的键存入到Set集合。因为Set具备迭代器,可以通过迭代方式获取所有的键,再根据get方法,获取每个键对应的值

2,entrySet:
————Set<Map.Entry<k,v>>  entrySet:将map集合中的映射关系存入到set集合中;这个关系的数据类型是Map.Entry,
Map.Entry中的 Entry是一个接口,是Map接口的一个内部接口
示例

import java.util.*;class MapDemo2 {public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {Map<String,String> map = new HashMap<String,String>();map.put("01","haha01");map.put("04","haha04");map.put("03","haha03");map.put("02","haha02");//entrySetSet<Map.Entry<String,String>> entrySet = map.entrySet();//将Map集合中映射关系取出,存入到Set集合Iterator<Map.Entry<String,String>> it = entrySet.iterator();while (it.hasNext()){Map.Entry<String,String> me = it.next();String key = me.getKey();//getKey和getValue是Map.Entry<K,V>的方法String value = me.getValue();//sop("key= "+key+" , value= "+value);}//keySetSet<String> keySet = map.keySet();//①获取map集合所有键的Set集合,keySet();Iterator<String> it = keySet.iterator();//②通过Set集合迭代器获取键值while (it.hasNext()){String key = it.next();String value = map.get(key);//③通过键值获取其对应的值sop("key= "+key+" ,value= "+value);}}}

Map.Entry

 Entry是Map接口的一个内部接口

在源码中的实现示例:

interface Map{public static interface Entry//内部接口,static是定义在局部的,所以看到静态接口一定是内部接口{public abstract Object getKey();public abstract Object getValue();}}class HashMap implements Map{class Haha implements Map.Entry//内部类,实现接口的内部类{public  Object getKey(){};public  Object getValue(){};}}


Map.Entry表示一种数据类型,即键值对的映射关系,用一个不恰当的比喻通俗点来说:Map中的元素就像是一对夫妻,存入到Set中的Map.Entury就相当于他们的一本结婚证

图解:








4 0
原创粉丝点击