Java成长之路———Map集合及映射(求指点)

时间:2021-05-07 17:52:54

跟踪上一篇文章:Java成长之路——Collection集合及其子接口

上一篇文章分享到特殊的Map集合与映射遍历,本篇文章就继续分享本人的学习:


.

映射

映射(map)是存储键和值间关联(即,键值对)的对象。给定一个键,可以找到其值。键和值都是对象。键必须唯一,但是值可以重复。

映射围绕两个基本操作:get()put()为了将值放入到映射中,使用put(),指定键和值。为了获取值,调用get(),传递键作为变元,值会被返回。具体的实现操作在上一篇结尾时有详细代码。

映射类:

常用的映射类:HashMap、LinkedHashMap、TreeMap。

映射的遍历:

映射不是集合,没有实现Collection接口。因此不能直接遍历映射。原理见下图:

Java成长之路———Map集合及映射(求指点)

Entry接口是在Map接口的内部定义的,是内部接口。

在Map中存储的元素是-值对,一个键-值对作为一个整体使用Map.Entry接口表示。Map.Entry定义的方法:

K  getKey()

返回该映射条目的键

V  getValue()

返回该映射条目的值

V  setValue(V v)

将这个映射条目的值设置为v

为了遍历映射需要采用变通的方法:获得映射的集合视图。

使用entrySet()方法,返回包含映射中所有元素(键-值对)的Set对象

使用keySet(),返回包含映射中所有键的Set对象。

使用values(),返回包含映射中所有值的Collection对象。

对于这三个集合视图都是基于映射的,修改其中的一个集合会影响其他集合。



Map

是一个映射接口,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。

Map中常用方法:

  1. contianskey
  2. contiansvalue
  3. isEmpty
  4. remove
  5. size
  6. clear   等等。

Map集合主要分为以下三类:

    1,HashMap

        HashMap实现了Map接口。它使用哈希表存储映射,即使对于比较大的集合,get()和put()的执行时间也保持不变。

其声明如下:

classHashMap<K, V>

HashMap类定义了以下构造方法:

HashMap()

HashMap(intcapacity)  //指定容量,默认是16

HashMap(intcapacity, float fillRatio) //充填比率,0.0-1.0之间,默认0.75

HashMap(Map<?extends K, ? extends V> m)

    2,LinkedHashMap

LinkedHashMap扩展了Hashmap类,该类在内部使用一个链表维护条目添加到映射中的顺序,从而可以按照插入顺序迭代整个映射

LinkedHashMap定义了以下构造方法:

LinkedHashMap();

LinkedHashMap(intcapacity);

LinkedHashMap(intcapacity, float fillRatio);

LinkedHashMap(Map<?extends K, ? extends V> m);

    3,TreeMap

TreeMap类扩展了AbstractMap类,并实现了NavigableMap接口。该类使用树接口存储条目。TreeMap提供了有序存储键/值对的高效手段,并支持快速检索。应当注意TreeMap确保其元素以键的升序存储

TreeMap类定义了以下构造方法:

TreeMap( );

TreeMap(Comparator<?super K> comp);  //比较器对象作为参数

TreeMap(Map<? extendsK, ? extends V> m);

TreeMap(SortedMap<K, ?extends V> sm);


Java成长之路———Map集合及映射(求指点)

入门小白求指导,谢谢各位大神。