1. package cn.learn.Map;
  2. /*
  3. java.util.Hashtable<k,y> implements Map<k,v>
  4. 早期双列集合,jdk1.0开始
  5. 同步的,单线程,安全,慢,底层也是哈希表
  6. 与HashMap不一样的是,Hashtable key,value不允许存储null
  7.  
  8. Hashtable与vector一样被多线程集合HashMap和ArrayList取代
  9.  
  10. 但是Hashtable的子类Properties依然活跃,它是唯一一个与I/O流相结合的集合
  11.  
  12. */
  13. public class HashtableClass {
  14. }
  1. package cn.learn.Map;
  2.  
  3. import java.util.HashMap;
  4. import java.util.LinkedHashMap;
  5.  
  6. /*
  7. java.util.LinkedHashMap<k,v> extends HashMap
  8. 底层原理:
  9. 哈希表+链表(记录元素的顺序)
  10. */
  11. public class LinkedHashMapClass {
  12. public static void main(String[] args) {
  13. HashMap<String,String> map= new HashMap<>();
  14. map.put("a","b");
  15. map.put("3a","b");
  16. map.put("2a","b");
  17. map.put("1a","b");
  18. System.out.println(map); //key不重复且无序
  19.  
  20. LinkedHashMap<String,String> linked = new LinkedHashMap<>();
  21. linked.put("a","b");
  22. linked.put("3a","b");
  23. linked.put("2a","b");
  24. linked.put("1a","b");
  25. System.out.println(linked); //有序且不重复,存取一致
  26. }
  27.  
  28. }
  1. package cn.learn.Map;
  2.  
  3. import java.security.Key;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import java.util.Set;
  8.  
  9. /*
  10. java.util.Map1<k,v> -双列集合
  11. 一个元素包含两个值(一个key,一个value),key不能重合
  12. Map中key和value的数据类型可以相同,也可以不同
  13.  
  14. java.util.HashMap<k,v>集合 implements Mqp<k,v>接口
  15. HashMap集合的特点
  16. 1.HashMap集合底层是哈希表:查询的速度特别的快
  17. 2.存储的元素和取出元素的顺序可能不一致
  18. 3.底层是:数组+单向链表/红黑树 = 哈希表
  19.  
  20. java.util.LinkedHashMap<k,v> extends HashMap<k,v>
  21. LinkedHashMap的特点:
  22. 1.存取元素的顺序一致
  23. 2.哈希表+链表(保证迭代顺序)
  24.  
  25. HashMap存储自定义类型键值
  26. Map为了保证唯一性,需要重写hashCode和equals方法,以保证key唯一
  27. 和HashSet一样,value可不唯一
  28.  
  29. */
  30. public class MapMethods {
  31. public static void main(String[] args) {
  32. show1();
  33. }
  34. private static void show1(){
  35. HashMap<String,String> hashMap = new HashMap<>();
  36. //put添加集合元素,若key不在,返回value为空,若存在替换value,返回被替换的value
  37. System.out.println(hashMap.put("1","da")); //返回null
  38.  
  39. System.out.println(hashMap.put("1","da2")); //返回被替换的值da
  40.  
  41. System.out.println(hashMap); //打印了不是地址,说明重写了toString方法{1=da2}
  42.  
  43. //remove(Object key)删除元素,存在返回删除的value,不存在返回null
  44. String remove = hashMap.remove("1");
  45. System.out.println(remove); //da2
  46.  
  47. //get(Object key)获取value
  48. //containsKey(Object key)判断是否包含指定的键
  49. // 包含返回true不包含返回false,和遍历一起使用进行筛选
  50.  
  51. //遍历双列集合
  52. System.out.println(hashMap.put("2","da29"));
  53. System.out.println(hashMap.put("5","da42"));
  54. System.out.println(hashMap.put("26","5da2"));
  55.  
  56. //KeySet()实际是把Key值取出放入Set<key>集合(不允许重复),则可用迭代器,增强for
  57. Iterator<String> iter=hashMap.keySet().iterator(); //此时Set放入的是key值,迭代的也是key值
  58. while(iter.hasNext()){
  59. String k= iter.next();
  60. System.out.println(hashMap.get(k));
  61. }
  62. //增强for遍历
  63. for (String str : hashMap.keySet()) {
  64. System.out.println(hashMap.get(str));
  65. }
  66.  
  67. /*
  68. entrySet遍历
  69. 在Map集合中有个内部接口Entry,Map.Entry<k,v>
  70. 作用:当Map集合一创建,就会有个Entry对象(键与值的映射关系),放入Set中
  71. 返回类型 Set<Map.Entry<K,V>>,再调用Set的iterator方法,使用迭代器,取出Map.Entry<Object,Object>
  72. 再调用Entry的两个方法遍历
  73. Map.Entry有两个方法,getKey和getValue
  74. */
  75. //放入Set
  76. Set<Map.Entry<String,String>> set = hashMap.entrySet();
  77. //使用迭代器
  78. Iterator<Map.Entry<String,String>> it = set.iterator();
  79. //利用迭代器方法遍历
  80. while(it.hasNext()){
  81. //取得Set的元素
  82. Map.Entry<String,String> entry= it.next();
  83. //调用 Map.Entry的方法
  84. System.out.println(entry.getKey());
  85. System.out.println(entry.getValue());
  86. }//当然可以也可以使用增强for循环
  87.  
  88. }
  89. }

HashMap -双列集合的遍历与常用的方法的更多相关文章

  1. JAVA双列集合HashMap

    HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类,   Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...

  2. (10)集合之双列集合Map,HashMap,TreeMap

    Map中的元素是两个对象,一个对象作为键,一个对象作为值.键不可以重复,但是值可以重复. 看顶层共性方法找子类特有对象. Map与Collection在集合框架中属并列存在 Map存储的是键值对 Ma ...

  3. 双列集合Map的嵌套遍历

    双列集合Map的嵌套使用,例如HashMap中还有一个HashMap,这样的集合遍历起来稍微有点儿复杂.例如一个集合:HashMap<Integer,HashMap<String,Inte ...

  4. Map集合(双列集合)

    Map集合(双列集合)Map集合是键值对集合. 它的元素是由两个值组成的,元素的格式是:key=value. Map集合形式:{key1=value1 , key2=value2 , key3=val ...

  5. Java之Map接口(双列集合)

    Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...

  6. Java中的集合(七)双列集合顶层接口------Map接口架构

    Java中的集合(七)双列集合顶层接口------Map接口 一.Map接口的简介 通过List接口,我们知道List接口下的集合是单列集合,数据存储是单列的结构.Map接口下是一个键值对(key-v ...

  7. 双列集合Map

    1.双列集合Map,就是存储key-value的键值对. 2.hashMap中键必须唯一,值可以不唯一. 3.主要方法:put添加数据    getKey---通过key获取数据    keySet- ...

  8. Map集合——双列集合

    双列集合<k, v> Map: Map 和 HashMap是无序的: LinkedHashMap是有序的: HashMap & LinkedHashMap: put方法: 其中,可 ...

  9. java oop 单列 双列 集合, 迭代器 的使用和说明

    一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...

随机推荐

  1. 左侧点击后右侧添加tab标签栏以及内容

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. 帝国CMS链接域名重写、伪静态处理

    需求:将 www.abc.com/e/tags?tagsid=1 改写成  www.abc.com/softlink/1.html形式: 环境:Windows服务器: 路径:D:/web/www.ab ...

  3. HTML创建链接框

    使用CSS样式创建一个漂亮的链接框吧 <!DOCTYPE html> <html> <head> <style> a:link,a:visited { ...

  4. 修改 linux 默认字符集

    [root@eric6 ~]# cat /etc/sysconfig/i18n //查看 linux 默认的字符集,默认是 UTF-8 LANG="zh_CN.UTF-8" cp ...

  5. 微信支付MD5签名算法C#版,ASCII码字典序排序0,A,B,a,b

    /// <summary> /// 微信支付MD5签名算法,ASCII码字典序排序0,A,B,a,b /// </summary> /// <param name=&qu ...

  6. CF 82 D.Two out of Three

    前言 全网唯一不同题解 设 \(f[i][j]\) 表示第 \(i\) 次选取留下来的数是 \(k\) 的最小花费 枚举前面的留下来的点 \(k\) 当前能留下的点只有 \((2*i),(2*i+1) ...

  7. CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析

    说明 opacity 用来设置透明度 display 定义建立布局时元素生成的显示框类型 visibility 用来设置元素是否可见. opacity.visibility.display 这三个属性 ...

  8. 打开pycharm提示python已停止工作

    今天遇到一个棘手的问题: 现象:打开pycharm,立刻提示python已停止工作,关掉后还会弹出一个新的,就是永远维持至少一个提醒框在界面的状态 解决过程: 方法一:然后在网上搜解决办法,有一个主流 ...

  9. kettle 通过JDBC 连接SQL Server(Error occurred while trying to connect to the database)

    在连接数据(MS SQLServer 2008)发现:Error occurred while trying to connect to the database 然后找资料看,都不是问题所在,最后一 ...

  10. easyui加载json菜单的相关代码

    /** * 取菜单数据 */ $(function getmenujson() { $.ajax({ type: "GET", cache: false, url: "/ ...