Map

1、Map实现类:HashMap、Hashtable、LinkedHashMap、TreeMap

  • HashMap 

    • 新增元素/获取元素

       1     void contextLoads() {
      2 //声明
      3 Map<String,Object> hashMapOne=new HashMap<>();
      4
      5 // .put 添加元素,添加重复的key,不会添加成功,但是会更新key对应的value值
      6 hashMapOne.put("name","zhangsan");
      7 hashMapOne.put("name","lisi");
      8 System.out.println(hashMapOne.get("name")); //输出结果是 lisi(替换了原来的zhangsan)
      9
      10 // .putIfAbsent key存在时,不覆盖原来key的value值,也不新增这个重复的key
      11 hashMapOne.put("age","3");
      12 hashMapOne.putIfAbsent("age","10");
      13 System.out.println(hashMapOne.get("age")); //输出结果是3,没有被替换
      14
      15 // .putall 复制,将所有元素从一个HashMap复制到另一个HashMap
      16 Map<String,Object> hashMapTwo=new HashMap<>();
      17 hashMapTwo.put("age","5");
      18 hashMapTwo.put("sex","女");
      19 hashMapTwo.putAll(hashMapOne);
      20 //hashMapOne中的age覆盖了hashMapTwo原来的age,输出3
      21 System.out.println(hashMapTwo.get("age"));
      22 //hashMapOne中没有sex,所以输出hashMapTwo原来的sex,女
      23 System.out.println(hashMapTwo.get("sex"));
      24 //hashMapOne中的name,复制到了hashMapTwo中,输出lisi
      25 System.out.println(hashMapTwo.get("name"));
      26
      27 // .get获取元素上面的输出语句有
      28 // .getOrDefault 当key不存在时,设置一个默认值,输出"上海"
      29 System.out.println(hashMapOne.getOrDefault("area","上海"));
    • 遍历元素
           void contextLoads() {
      //声明
      Map<String,Object> hashMapOne=new HashMap<>();
      hashMapOne.put("name","zhangsan");
      hashMapOne.put("age","25");
      hashMapOne.put("area","上海"); //1、使用keySet获取所有的Key,然后遍历
      System.out.println("方式1:使用keySet遍历");
      for (String key : hashMapOne.keySet()){
      System.out.println(key + " " + hashMapOne.get(key));
      } //2、使用Map.entrySet获取所有的元素,然后使用iterator遍历
      System.out.println();
      System.out.println("方式2:通过Map.entrySet使用iterator遍历");
      Iterator<Map.Entry<String,Object>> iterator=hashMapOne.entrySet().iterator();
      while (iterator.hasNext()){
      Map.Entry<String, Object> entry = iterator.next();
      System.out.println("Key:" + entry.getKey() + ",Value:" + entry.getValue());
      } //3、用Map.entrySet获取所有的元素,然后使用foreach循环遍历
      System.out.println();
      System.out.println("方式3:通过Map.entrySet使用foreach循环遍历");
      for (Map.Entry<String, Object> entry : hashMapOne.entrySet()) {
      System.out.println("Key:" + entry.getKey() + ",Value:" + entry.getValue());
      } //4、直接使用values获取到所有的值,该种方式无法遍历Key
      System.out.println();
      System.out.println("方式4:使用values遍历,使用这种方式无法遍历Key");
      for (Object value : hashMapOne.values()) {
      System.out.println(value);
      }
      }
  • HashMap、Hashtable、LinkedHashMap、TreeMap 的区别
  相同点:
    • 都实现了Map接口
    • 都不允许key重复
  不同点
不同点 HashMap Hashtable LinkedHashMap TreeMap
排序 不排序 不排序 按插入顺序排序
有默认排序
【按照key的字典顺序升序排序】
可自定义排序
null值
Key:允许
Value:允许
Key:不允许
Value:不允许
Key:允许
Value:允许
Key:不允许
Value:允许
线程安全 非线程安全 线程安全 非线程安全 非线程安全
继承的父类 AbstractMap Dictionary HashMap>AbstractMap AbstractMap

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

  1. Java集合Map接口与Map.Entry学习

    Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...

  2. Java集合——Map接口

    1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V  put(key,value) ...

  3. Java集合—Map

    简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...

  4. Java集合Map基本方法

    jdk1.7 api中的方法摘要: 参考java集合大全图:https://www.cnblogs.com/xkzhangsanx/p/10889114.html Map为所有Map子类的接口.

  5. java集合——Map

    声明:以下内容都是来自网络总结,将会参考很多,没有声明转载来源. 一.Map接口 1.HashMap HashMap和HashTable的区别:http://blog.csdn.net/shohoku ...

  6. Java集合--Map总结

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map ...

  7. Java集合-----Map详解

          Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value      Map 中的 key 和  value 都可以是任何引用类型的数据      Map 中的 ...

  8. Java集合Map与其子类回顾

    接10月12号昨天的笔记,今天继续回顾集合中的Map集合. 一.集合工具操作类Collections 问题:collection和collections的区别? 1.collection是单列集合的顶 ...

  9. Java集合----Map集合

    Map Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value Map 中的 key 和 value 都 ...

  10. Java 集合-Map接口和三个子类实现

    2017-10-31 22:05:59 Map 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. HashMap是基于散列表实现的,插入.删除和定位元素时间复杂度平均能达到O ...

随机推荐

  1. 【Unity|C#】基础篇(12)——反射(Reflection)(核心类:Type、Assembly)

    [学习资料] <C#图解教程>(第24章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  2. py 二级习题(turtle)

    用turtle画一个正方形 import turtle turtle.penup() turtle.goto(-100,-100) turtle.pendown() turtle.begin_fill ...

  3. 2019ICPC南昌站E.Bob's Problem

    题意: 一张图,n个点,m条边分为黑边和白边,黑边任意选,白边只能选k条,在保持整张图连通的情况下使得所选变的权值和最大 解析: 因为边权全部是正值,所以可以把黑边全选上,缩点之后对各个连通块和白边进 ...

  4. 从servlet向jsp中传数据用Java接收js调用

    servlet: response.sendRedirect("showMessage.jsp?ValueA=1"); jsp: var a=<%=request.getPa ...

  5. python2.6升级python2.7后,yum不能用了,如何解决

    背景: 跑python的case时候,发现log功能不好用,于是升级了python2.6-->python2.7 but,升级之后,发现yum命令不好用了.怎么办? 百度搜了一下,如何解决: 参 ...

  6. 将本地文件git到远程github仓库

    使用git管理项目是开发人员必备的技能,下面就介绍如何使用git将本地文件管理并且同步到github上面. 小白可以参考 创建SSH-key并且在github中添加认证 在本地用户的.ssh文件下面生 ...

  7. idea修改忽视文件产生得bug

    为了提交代码方便,在idea中增加了忽视文件选项. 这一修改可把自己坑惨了,更改代码运行代码得时候,连打印都没出来,对照了半天代码 也没发现是哪里得错误,后来想到某次修改代码后class文件并没改变, ...

  8. c#中转义字符\n和\r的区别

    在c#中\n代表换行,\r代表回车,但\r是把后面的字符覆盖前面的,例: "1234\n567" 输出的是 1234 567 "1234\r567"输出的是 5 ...

  9. [HNOI2014] 道路堵塞 - 最短路,线段树

    对不起对不起,辣鸡蒟蒻又来用核弹打蚊子了 完全ignore了题目给出的最短路,手工搞出一个最短路,发现对答案没什么影响 所以干脆转化为经典问题:每次询问删掉一条边后的最短路 如果删掉的是非最短路边,那 ...

  10. PP:Classification of Time-Series Images Using Deep Convolutional Neural Networks

    The 10th international conference on machine vision; C类 Methodology: 非主流方法 2 stages: 1. convert time ...