Java中的Map

导言:

        1、   映射Map的学习

        2、   Map的方法使用技巧

        3、   如何利用纯英文的官方文档学习JAVA

                 亲~我们来回顾Map的知识点,回顾上节课,主要用实例来对比list和map的优缺点。(如表1)

对比

优点

缺点

map

1.  使用map方法可以减少代码量;

2.  在删除和修改数据的操作的时候可以快速定位,不用遍历。

3.  为我们提供了灵活便捷的数据处理方式,可以轻松实现实用的数据结构。

1.  在使用map进行增加数据的时候,会增加参数,从而导致效率减低。

2.  List可以直接进行查询,而map需要转换成list再进行查找。在大型数据量时会导致耗时增加。

list

                                                                表1  map的优缺点

☆映射的深入理解与运用

     什么是map?

     还是从我们熟知的生活中来理解这个概念,想想比如我们在学校,会被老师安排座位和座号,一个座位就相当于一个键(key),而你就是一个值(value),一届又一届的轮流,这个座位上的人会不断在变,在不同时刻也许“座位”也会发生概念上变化。你通过你的座位号找到你的座位,这个过程就是映射的过程,也是理解Map的关键。

     理解一下下面几点

     1、   一个映射不能包含重复的键。为什么呢,在中学阶段,就是你不可能拥有两个座位,一般都是一对一的吧。

     2、   每个键至多只能有一个值。你坐在你座位上,意思就是你的座位上只能坐你一个人。如果还有一个人坐在你身上,那就是侵占,属于非法。(特殊情况不考虑,你说你有个很好的机油,那木有办法啦~)

对比List和map从概念上理解

List的功能方法

基于List两种List:

              1)   ArrayList,其优点在于随机访问元素;

              2)   LinkedList,它并不是为快速随机访问设计的,而是更强大的更通用的方法。

                      List : 次序是List最重要的特点:它保证维护元素特定的顺序。

                     ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。

                      LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。

map的功能方法

上文解释了键值的概念,理解map应该就不会难了。在老师写的关于map的第一行代码就用到了put。

方法put(Objectkey, Object value)

             添加需要的一个“值”(想要得东西,比如代码中的水果)和与“值”相关联的“键”(key)(使用它来查找)。(如图1)

     

                                      图1

方法get(Objectkey)

             返回与给定“键”相关联的“值”(如图2)。当然也可以利用containsKey()和containsValue()测试Map中是否包含某个“键”或“值”。

 

                              图2

◎课堂上涉及到基于Map的几个类

            Map : 维护“键值对”的关联性,使你可以通过“键”查找“值”

           TreeMap : 基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap的特点在于,你得到的结果是经过排序的。

           HashMap : 基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

           HashTable: Hashtable是基于陈旧的Dictionary类的,HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以,只容许有一个null值的key,可以有多个null值的value)。

           SequenceHashMap:封装好的一个基于Map,在输出排序时保证输出的值是有次序的。需要加一个JAR包:commons-collections.jar

对比List和map从代码上鸟瞰

使用Map和Map的一般过程对比

List|Map对比

Map

List

步骤1

声明一个Map:

Map map = new HashMap();//创建映射

声明一个List:

List list0=new ArrayList();

List list1=new ArrayList();

步骤2

向map中放值,注意: map是key-value的形式存放的,如:

map.put("001","苹果");

向list中插入键值,由于没有像map中

的键值对应故有步骤1的list0与list1;

代码如:

list0.add("001");

list1.add("苹果")

步骤3

从map中取值:

String  name=(String)map.get(“001”);

结果是: name = 苹果

要进行查找遍历,利用for循环进行遍历 

 

步骤4

遍历一个map,从中取得key和value;

                                                 表2  Map和Map的一般过程对比

了解 Map 接口和方法(尝试阅读官方文档进行学习)

课堂基本思路

 

                                                 图3

图3  int size()返回 Map 中的键-值映射的数目

 

                                         图4

       图4   get(Objectkey) 返回与指定键关联的值

 

                                                     图5

图5  isEmpty()如果 Map 不包含键-值映射,则返回 true

                                                             图6

图6  containsValue(Objectvalue) 如果此 Map 将一个或多个键映射到指定值,则返回 true

细节知识点学习

① int size()返回键值映射的数目(如图7),如果出现两条记录相同,按一条记录算。

 

                       图7

② isEmpty()

如果Map中不包含键值映射,返回true.若包含则键值则返回false.(如图8)

 

                                        图8

③containsKey

上文提到是用来判断Map中是否包含指定键的映射,是的话,返回true.(如图9)

 

                                           图9

④containsValue

如果Map中可以找到键值对应,就是就返回ture,代码类似containsKey,参考图9。

⑤remove

     删除map中键值的对应关系的值,销毁了键值。

⑥putAll

从指定的所有的映射键值关系复制到新的键值关系中。(如图10)

             

                                          图10

⑦ entrySet   返回所包含映射的set视图,set中每个值都是entrySet 对象,所以使用getKey()和getValue()返回后者的键值。(如图11)

 

                                                       图11

⑧ keyset

返回所包含映射的set视图,set中每个值都是keyset对象,返回键,代码类似entrySet ,参考图11。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值