Map接口-HashMap

底层逻辑解析:

image

 

image

D.4 通过哈希计算,有可能和C.3 放同一位置

image

可以连在一起的方式,D.4 和C.3 

image

image

 单向链表,查询效率低,可以通过“红黑二叉树”,后期讲解...

 

常用方法:

  1 import java.util.Collection;
  2 import java.util.HashMap;
  3 import java.util.Map;
  4 import java.util.Set;
  5 
  6 public class DemoClass4HashMap {
  7     public static void main(String[] args) {
  8         //TODO HashMap 继承Map接口
  9         // 数组存储键值对,无序的
 10 
 11         /*
 12         * 1. put()添加数据,如果key存在,在添加相同的key,newValue替换oldVaue,并返回oldValue
 13         * */
 14         HashMap map = new HashMap();
 15         /*map.put("1", "zhangsan");
 16         map.put("2", "lisi");
 17         map.put("3", "wangwu");
 18         System.out.println(map); //{1=zhangsan, 2=lisi, 3=wangwu}*/
 19 
 20         /*map.put("1", "zhangsan");
 21         map.put("2", "lisi");
 22         map.put("3", "wangwu");
 23         map.put("1", "zhaoliu");
 24         System.out.println(map); //{1=zhaoliu, 2=lisi, 3=wangwu}  因为key都是1,所以zhaoliu替换了zhangsan*/
 25 
 26        /* map.put("1", "zhangsan");
 27         map.put("2", "lisi");
 28         map.put("3", "wangwu");
 29         System.out.println(map.put("1", "zhaoliu"));
 30         //put可以实现修改的作用,有返回值,返回值为:被修改的值 例如:
 31         System.out.println(map);*/
 32         /*
 33         * 结果:
 34         * zhangsan
 35           {1=zhaoliu, 2=lisi, 3=wangwu}
 36         * */
 37 
 38         /*
 39         * 1.1 putIfAbsent() 添加数据,如果key存在,在新增不起作用
 40         * */
 41        /* map.putIfAbsent("1", "zhangsan");
 42         map.putIfAbsent("2", "lisi");
 43         map.putIfAbsent("3", "wangwu");
 44         map.putIfAbsent("1", "zhaoliu");
 45         System.out.println(map);*/
 46         /*
 47         * 结果:{1=zhangsan, 2=lisi, 3=wangwu}
 48         *  因为1 已经有了,即便添加zhaoliu,也不行,不清作用
 49         * */
 50 
 51         /*
 52         * 2. 查询数据
 53         * */
 54         //System.out.println(map.get("1")); //zhaoliu
 55 
 56         /*
 57         * 3.删除数据
 58         * */
 59         //map.remove("1"); //key=1 满足这个条件就删除
 60         //map.remove("1", "zhangsan"); //key=1, value=zhangsan 两个条件都满足才删除
 61         //System.out.println(map);  //{2=lisi, 3=wangwu}
 62 
 63         /*
 64         * 4. replace() 修改方法,(除了put实现替换修改,不推荐),并返回修改前的值
 65         * */
 66         /*map.putIfAbsent("1", "zhangsan");
 67         map.putIfAbsent("2", "lisi");
 68         map.putIfAbsent("3", "wangwu");
 69         System.out.println(map); //{1=zhangsan, 2=lisi, 3=wangwu}
 70 
 71         Object obj = map.replace("1", "zhaoliu");
 72         System.out.println("OldValue="+obj); //OldValue=zhangsan
 73 
 74         Object obj2 = map.replace("4", "zhaoliu");
 75         System.out.println("OldValue2="+obj2); //OldValue2=null
 76 
 77         System.out.println(map); //{1=zhaoliu, 2=lisi, 3=wangwu}*/
 78 
 79 
 80         /*
 81         * 5. 常用方法 keySet()  containsKey()  values() containsValue() entrySet()
 82         * */
 83 
 84         //获取Map里所有的key
 85         map.putIfAbsent("1", "zhangsan");
 86         map.putIfAbsent("2", "lisi");
 87         map.putIfAbsent("3", "wangwu");
 88         System.out.println(map); //{1=zhangsan, 2=lisi, 3=wangwu}
 89 
 90         //获取所有的key值
 91         Set set = map.keySet();
 92         for (Object o : set) {
 93             System.out.println(o+"-"+map.get(o));
 94         }
 95         System.out.println(map.containsKey("1"));
 96 
 97         //同理 获取所有的value值
 98         Collection values = map.values();
 99         System.out.println(map.containsValue("zhangsan"));
100 
101         System.out.println("-----获取键值对象-------");
102         //获取键值对象
103         HashMap<String, String> map2 = new HashMap();
104         map2.put("1", "zhangsan");
105         map2.put("2", "lisi");
106         map2.put("3", "wangwu");
107 
108         //这样泛型写,可以看出来entry是个键值对象
109         Set<Map.Entry<String, String>> entries = map2.entrySet();
110         for (Map.Entry<String, String> entry : entries) {
111             System.out.println(entry);
112             System.out.println("key="+ entry.getKey() +"---"+ "value="+entry.getValue());
113         }
114         /*
115         * 输出结果:
116             1=zhangsan
117             key=1---value=zhangsan
118             2=lisi
119             key=2---value=lisi
120             3=wangwu
121             key=3---value=wangwu
122         *
123         * */
124 
125         map2.size();
126         map2.isEmpty();
127         map.clear();
128         map.clone();
129 
130     }
131 }

 

posted @ 2025-10-21 09:55  字节虫  阅读(11)  评论(0)    收藏  举报