• 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. BZOJ5336:[TJOI2018]游园会——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5336 https://www.luogu.org/problemnew/show/P4590 小豆 ...

  2. BZOJ4539 [Hnoi2016]树 【倍增 + 主席树】

    题目链接 BZOJ4539 题解 我们把每次复制出来的树看做一个点,那么大树实际上也就是一棵\(O(M)\)个点的树 所以我们只需求两遍树上距离: 大树上求距离,进入同一个点后在模板树上再求一次距离 ...

  3. Linux实验二

    一        第一个实验 Linux基础 1 通过娄老师关于分析学霸学渣的前言 明白了真正的学习一门功课应该是思考本质 而不是纯属记忆 2 全部的命令如下 Linux命令格式:command [o ...

  4. HDU.1596 find the safest road (Floyd)

    HDU.1596 find the safest road (Floyd) 题意分析 与普通的最短路不太相同,本题有些许的变化. 1. 要找到由i到j最安全的路,故在求解的时候要保证mp[i][j]尽 ...

  5. sass的循环for,while,each

    1. for @for $i from 1 to 10 { .border-#{$i} { border: #{$i}px solid blue; } } 2. while $i: 6; @while ...

  6. 【单调队列】【P1776】宝物筛选

    传送门 Description 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物--这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝 ...

  7. [技巧篇]19.InputStream与String,Byte之间互转[转载]

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  8. vijos 1471 线性DP+贪心

    描述 Orz教主的成员为教主建了一个游乐场,在教主的规划下,游乐场有一排n个弹性无敌的跳跃装置,它们都朝着一个方向,对着一个巨大的湖,当人踩上去装置可以带你去这个方向无限远的地方,享受飞行的乐趣.但是 ...

  9. 设置zookeeper开机自启动

    1.进入到/etc/init.d目录下,新建一个zookeeper脚本 cd /etc/init.d vi zookeeper #!/bin/bash #chkconfig:2345 20 90 #d ...

  10. Python随机选择Maya场景元素

    之前在公司参与的一个与国外合作的项目中,有一景需要动态.随机地选取场景中的一些物体,同时显示指定材质,当时是用Houdini的节点+Hscript 解决的: 今天用简洁优雅的Python在Maya中写 ...