1、什么是Map集合。

Map用于保存具有映射关系的数据。key和value都可以是任意引用类型,但key不允许重复,即同一个Map的任何两个key通过equals方法比较总是返回false。

从Java源码看,Java是先实现了Map,然后通过包装一个所有value都为null的Map就实现了Set集合。Set有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet,而Map有HashMap、LinkedHashMap、SortedMap(接口)、TreeMap、EnumMap。

Map的value放在一起看,又像是一个List:元素之间可以重复,每个元素可以根据索引查找,只是索引不再是数字,而是另一个对象。Map接口定义的常用方法有:

2、Map包括一个内部类Entry,该类封装了一个key-value对。Entry包含3个方法:

1》Object getKey():返回该Entry里包含的key值。

2》Object getValue():返回该Entry里包含的value值。

3》Object setValue(V value):设置Entry里包含的value值,并返回新设置的value值。

3、Java 8为Map新增的方法

4、Java 8改进的HashMap和Hashtable实现类

HashMap和Hashtable典型的区别:

Hashtable:它是一个古老的类。它是一个线程安全的Map实现类(其实早于Map接口出现)。当HashMap不是线程安全的实现类。HashMap可以通过Collections工具类将其包装为线程安全的。

Hashtable:不允许使用null作为key和value。但HashMap可以使用null作为key或value。(HashMap中只可以有一个key为null的键值对,但可以有无数多个value为null的键值对。)

为了在HashMap、Hashtable中存储、获取对象,用作key的对象必须实现hashCode()方法和equals()方法。HashMap、Hashtable判断两个key相等的标准是:两个key通过equals()方法比较返回true,两个key的hashCode值也相等。

HashMap、Hashtable中还包含了一个containsValue()方法,用于判断是否包含指定的value。判断标准时两个value的equals()方法比较返回true。

5、LinkedHashMap

使用双向链表来维护key-value对的次序(只需要考虑key的次序),该链表负责维护Map的迭代顺序,迭代次序与键值对插入的顺序一致。即LinkedHashMap只需要维护键值对的插入顺序,不需要额外的排序开销。

6、Properties

使用Properties读写属性文件。其key、value都是字符串类型,提供了3个方法修改Properties中的key、value的值:

7、SortedMap、TreeMap

8、WeakWeakHashMap

9、identityHashMap

10、EnumMap

11、各Map实现类的性能分析

12、HashSet、HashMap的性能选项

Java-集合第五篇Map集合的更多相关文章

  1. Java提高(5)---map集合排序

    map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按照成绩的好坏进行排序 ...

  2. Java基础(二十三)集合(6)Map集合

    Map接口作为Java集合框架中的第二类接口,其子接口为SortedMap接口,SortedMap接口的子接口为NavigableMap接口. 实现了Map接口具体类有:HashMap(子类Linke ...

  3. Java【第十篇】集合

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中.Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组Java 集合可分为 Set.List ...

  4. Java学习笔记24(Map集合)

    Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...

  5. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  6. 【Java】遍历List/Set/Map集合的一些常用方法

    /* * 遍历List/Set/Map集合的一些常用方法 */import java.util.ArrayList;import java.util.HashMap;import java.util. ...

  7. Java集合类学习笔记(Map集合)

    Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是 ...

  8. 第1节 Scala基础语法:13、list集合的定义和操作;16、set集合;17、map集合

    list.+:5 , list.::5: 在list集合头部添加单个元素5 : li1.:+(5):在list集合尾部添加单个元素5: li1++li2,li1:::li2:在li1集合尾部添加il2 ...

  9. Java【第五篇】基本语法之--数组

    数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元素可以是任何数据类型,包括基本类型和引 ...

随机推荐

  1. string初始化

    #include <iostream> using namespace std; int main(int argc, const char * argv[]) { //通过const c ...

  2. pdf幻灯片:圆锥曲线中的“三定”问题探究(一)

    预留的广告位! 下载该pdf文件,然后在adobe reader 的"视图"中使用"全屏模式"播放该幻灯片 #include <iostream> ...

  3. 正确重写hashCode方法

    https://blog.csdn.net/HD243608836/article/details/87367763 到这里,对象写完了,开始描述问题. 计算hashCode的注意事项: 1.不能包含 ...

  4. NOIP2017 D2T1 奶酪

    洛谷P3958 超级水的并没有用什么几何知识的几何题…… 直接爆搜一遍最后判断有没有与上/下表面相连的球之间连通即可……O(n2)不动脑子的复杂度 最多只是用一下并查集来判断两个点是否连通…… 具体细 ...

  5. 【LOJ#6036】[雅礼集训2017Day4]编码

    传送门 题意简述 判定 n 个含 ? 字符的二进制串是否存在一种把 0/1 填入 ? 中的方案使得任意两个串不具有前缀关系. (一个串最多一个 ?) Sol 二进制串 ,并且一个串最多一个 '?' 很 ...

  6. python-获取类名和方法名,动态创建类和方法及属性

    获取类名和方法名1.在函数外部获取函数名称,用.__name__获取2.在函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取3.使用inspect模块动态 ...

  7. Java——网络

    [通信协议分层]   (1)为什么要分层?  

  8. 10分钟学会React Context API

    Create-react-app来学习这个功能: 注意下面代码红色的即可,非常简单. 在小项目里Context API完全可以替换掉react-redux. 修改app.js import React ...

  9. 【bzoj3038】上帝造题的七分钟2

    *题目描述: XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. “第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平 ...

  10. SpringCloud 教程 (五) 断路器监控(Hystrix Dashboard)

    一.Hystrix Dashboard简介 在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型.断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标.Hystrix ...