• Map接口

Map为一个接口。实现Map接口的类都有一个特点:有键值对,将键映射到值的对象。 Map不能包含重复的键,每个键可以映射到最多一个值。

Map常见的接口方法有:

V  put(K key, V value)   将指定的值与该映射中的指定键相关联(注意,返回值是指被覆盖的value值)

V  remove(Object key)    如果存在(从可选的操作),从该地图中删除一个键的映射

boolean    containsKey(Object key)    如果此映射包含指定键的映射,则返回 true

boolean    containsValue(Object value)    如果此地图将一个或多个键映射到指定的值,则返回 true

Collection<V>    values()    返回此地图中包含的值的Collection视图。

int    size()    返回此地图中键值映射的数量

V    get(Object key)    返回到指定键所映射的值,或 null如果此映射包含该键的映射

Set<K>    keySet()    返回此地图中包含的键的Set视图

Set<Map.Entry<K,V>>    entrySet()     返回此地图中包含的映射的Set视图

示例1:(遍历Map集合,思路:先获取到键的集合,遍历集合,get方法取出值)

public class Test11 {
// Map集合没有生成Iterator的方法,所以要用以下方法遍历
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("张三",13);
hm.put("李四",14);
hm.put("王五",15);
Set<String> set = hm.keySet();
/*方式1:
Iterator<String> it = set.iterator();
while (it.hasNext()){
String s = it.next();
Integer i = hm.get(s);
System.out.println(s + "=" + i);
}*/ // 方式2:
for (String s : set) {
Integer i = hm.get(s);
System.out.println(s + "=" + i);
}
}
}

示例2:(遍历Map集合,思路:把键值对作为一个对象存进集合,遍历集合,取出对象的属性)

public class Test12 {
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("张三",13);
hm.put("李四",14);
hm.put("王五",15);
Set<Map.Entry<String,Integer>> set = hm.entrySet(); /*方式1:
Iterator<Map.Entry<String,Integer>> it = set.iterator();
while (it.hasNext()){
Map.Entry<String,Integer> entry = it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());*/ // 方式2:
for (Map.Entry<String,Integer> entry: set) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
  • HashMap类

上面的接口方法基本都是HashMap实现的。所以用起来基本一样,不多说。同样的,LinkedHashMap类继承HashMap类,用法基本一样,只是LinkedHashMap底层用了链表实现而已。

  • TreeMap类

可以看做能排序的HashMap。原理其实和TreeSet一样......

关于排序可以参考TreeSet类:https://www.cnblogs.com/chichung/p/10252495.html

  • Hashtable类

Hashtable与HashSet的关系和ArrayList与Vector的关系几乎一样。

  • 共同点:

底层都是哈希算法,都是双列集合

  • 区别:

1.HashMap是线程不安全的,效率高,JDK1.2版本出现的

Hashtable是线程安全的,效率低,JDK1.0版本出现的

2.HashMap可以存储null键和null值

Hashtable不可以存储null键和null值

java中的Map集合的更多相关文章

  1. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  2. Java中的map集合顺序如何与添加顺序一样

    一般使用map用的最多的就是hashmap,但是hashmap里面的元素是不按添加顺序的,那么除了使用hashmap外,还有什么map接口的实现类可以用呢? 这里有2个,treeMap和linkedH ...

  3. 在java中获取Map集合中的key和value值

  4. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  5. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

  6. Java Collection、Map集合总结

    1.Java中的Collection集合总结 Collection |---List(存储有序,可重复) |---ArrayList 底层数据结构是数组,查询快,增删慢. 线程不安全.效率高 |--- ...

  7. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  8. JAVA中关于Map的九大问题

    通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提 ...

  9. Java开发知识之Java中的Map结构

    Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...

随机推荐

  1. BZOJ4755: [JSOI2016]扭动的回文串——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4755 JYY有两个长度均为N的字符串A和B. 一个“扭动字符串S(i,j,k)由A中的第i个字符到 ...

  2. BZOJ2732:[HNOI2012]射箭——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2732 https://www.luogu.org/problemnew/show/P3222#su ...

  3. POJ 2728 Desert King | 01分数规划

    题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...

  4. BZOJ3523 [Poi2014]Bricks 【贪心】

    题目链接 BZOJ3523 题解 简单的贪心题 优先与上一个不一样且数量最多的,如果有多个相同,则优先选择非结尾颜色 比较显然,但不知怎么证 #include<algorithm> #in ...

  5. HHVM,高性能的PHP执行引擎

    HHVM (HipHop Virtual Machine) 是 Facebook 开源的 PHP 执行引擎. HHVM 采用一种JIT(just-in-time)的编译机制实现了高性能,同时又保持对 ...

  6. BZOJ2791 Rendezvous

    Description给定一个n个顶点的有向图,每个顶点有且仅有一条出边.对于顶点i,记它的出边为(i, a[i]).再给出q组询问,每组询问由两个顶点a.b组成,要求输出满足下面条件的x.y:1. ...

  7. CodeVS 1017 DP

    1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描 ...

  8. python实现堆栈、队列

    一.利用python列表实现堆栈和队列 堆栈: 堆栈是一个后进先出的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出. 我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的a ...

  9. K-近邻(KNN)算法

    1,KNN算法对未知类别属性的数据集中的每个点依次执行以下操作: 计算已知类别数据集中的点与当前点之间的距离; 按照距离递增排序; 选取与当前点距离最小的k个点; 确定前k个点所在类别的出现频率; 返 ...

  10. CentOS6.8 安装rar解压缩

    wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.0.tar.gz tar -zxvf rarlinux-x64-5.4.0.tar.gz cd rar ...