【学习日记】集合框架知识点总结(2)--Map

该集合的特点是存储键值对。一对一对往里存。而且要保证键的唯一性。

Map集合的常用方法

  • 1,添加

  • put(K key, V value)返回该键对应的原来的值 添加元素时,如果该键相同。那么后添加的值会覆盖原有键对应值。并返回原来键对应的值。

  • putAll(Map < ? extends K,? extends V > m)从指定映射中将所有映射关系复制到此映射中

  • 2,删除

  • clear()从此映射中移除所有映射关系

  • remove(Object key)删除映射关系只有一个的键

  • 3,判断

  • containsValue(Object value)是否包含该值,如果包含则返回true

  • containsKey(Object key)是否包含该键,如果包含则返回true

  • isEmpty()是否是空,如果是则返回true

  • 4,获取

  • get(Object key) 可用于判断某键是否存在。

  • size()返回此映射中的键-值映射关系数

  • values()返回此映射中包含的值的Collection视图

Map集合的两种取出方式

1,Set< k > keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所以可以用迭代方式取出所有的键,在根据map.get方法。获取每一个键对应的值。Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。

HashMap<String, Integer> map= new HashMap<String, Integer>();

Set<String> set = map.keySet();
Iterator<String> it =  set.iterator();while(it.hasNext()){
    String str = it.next();int a = map.get(str);
    sop(str+"...."+a);
}

2,Set < Map.Entry< k,v > > entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry,Entry其实就是Map中的一个static内部接口。他有getKey,getValue,hashCode,equals,setValue等方法。取出过程:先将关系存到Set合集中,然后用Set迭代器将关系取出,存到Map.Entry类型中,通过他自己的方法取出。

HashMap<String, Integer> map= new HashMap<String, Integer>();Set<Map.Entry<String, Integer>> sme = map.entrySet();
Iterator<Map.Entry<String, Integer>> itme = sme.iterator();while(itme.hasNext()){
    Entry<String, Integer>  me = itme.next();
    sop(me.getKey()+"..."+me.getValue());
}

为什么将Entry定义在Map内部呢?

因为只要有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。

Map的子类

数据结构 特点 其他
Hashtable 哈希表 不可以存入null键null值。该集合是线程同步的 效率低,用作键的对象必须实现Hashcode和equals
HashMap 哈希表 允许使用 null 值和 null 键,该集合是不同步的 效率高,null可以当作键或值存在的
TreeMap 二叉树 线程不同步 可以用于给map集合中的键进行排序

什么时候使用map集合呢?

当数据之间存在这映射关系时,就要先想map集合。

判断是否是同意元素编译器默认使用equals方法,排序用的是compareTo或者compare方法。所以可以根据需要自己覆盖equals方法或者compareTo或者compare方法。覆盖compareTo方法需要实现Comparable接口,定义比较器则需要实现Comparator接口,覆盖Map构造方法里的compare。

当存在多个元素映射关系时,可以使用map嵌套。即:当A、B、C存在映射关系时,将B、C存入map1中,再将A、map1存入map2中。

当存在一个元素映射多个元素时,如:A同时与B1,B2,B3映射时。可以将B1,B2,B3存入set/list集合中,再将A与set/list存入map中,建立起映射关系。

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(java,集合,map)