首页 > 其他 > 详细

Map集合

时间:2020-05-02 11:06:43      阅读:44      评论:0      收藏:0      [点我收藏+]

Map集合的特点

 java.util.Map<k,v>集合 Map 

集合的特点:

1、Map集合是一个双列集合,一个元素包含两个字(一个key,一个value);

2、Map集合中的元素,key和value的数据类型可以相同,也可以不同;

3、Map集合中的元素,key是不允许重复的,value是可以重复的;

4、Map集合中的元素,key和value是一一对应的。

Map接口【集合】常用的实现子类

 java.util. HashMap<k,v>集合implements Map<k,v>接口  
HashMap集合的特点:

1. HashMap集合底层是哈希表:查询的速度特别的快

   JDK1.8之前:数组+单向链表

  JDK18之后:数组+单向链表/红黑树(链表的长度超过8):提高查询的速度
2. hashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致。

java.uti.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap的特点: ?

1.LinkedHas hMap集合底层是:哈希表+链表(保证迭代的顺序)
? 2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的.

Map接口【集合】常用的方法

普通方法

 1 public V put(K key, V value) :
 2 /*          把指定的键与指定的值添加到Map集合中。
 3             返回值V:
 4             存储键值对的时候,key不重复,返回值v是null;
 5             存储键值对的时候,key重复,会使用新的value替换map中重复的value,
 6                             返回被替换的value
 7 */                            
 8  public V remove(Object key) :
 9 /*         把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
10             返回值V:
11                 key存在,V返回被删除的值
12                 key不存在,V返回null
13 */                
14  public V get(Object key)
15 /*        根据指定的键[key],在Map集合中获取对应的值。
16           返回值V:
17             key存在,返回被删除的value值
18             key不存在,返回null
19 */            
20  boolean containsKey(object key);
21  /*         判断集合中是否包合指定的鍵。
22             包含返回true
23             不包合含返回true
24 */

实例:

  1 package Map集合的学习._3Map集合常用的方法._1普通方法;
  2 
  3 
  4 import java.util.HashMap;
  5 
  6 /**
  7  * @Author Admin
  8  * @Classname DemoMapMethod
  9  * @Package Map集合的学习._3Map集合常用的方法
 10  * @GreatDate 2020/04/20 22:43:29
 11  * @Description TODO Map接口【集合】常用的方法
 12  */
 13 public class DemoMapMethod {
 14     public static void main(String[] args) {
 15         showPut();
 16         System.out.println("--------------------------");
 17         showRemove();
 18         System.out.println("--------------------------");
 19         showGet();
 20         System.out.println("--------------------------");
 21         showContainKey();
 22         
 23     }
 24     
 25     /*
 26         boolean containsKey(object key);
 27             判断集合中是否包合指定的鍵。
 28             包含返回true
 29             不包合含返回true
 30      */
 31     private static void showContainKey() {
 32         //创建Map集合额对象
 33         HashMap<String, Integer> map = new HashMap<>();
 34         map.put("赵丽颖", 168);
 35         map.put("杨幂", 170);
 36         map.put("林志玲", 178);
 37         map.put("杨颖", 165);
 38         System.out.println(map);
 39         System.out.println("----------------------------");
 40         
 41         boolean b = map.containsKey("赵丽颖");
 42         System.out.println("b:" + b);//true
 43         boolean b1 = map.containsKey("赵今麦");
 44         System.out.println("b:" + b1);//false
 45         
 46     }
 47     
 48     /*
 49         public V get(Object key)
 50             根据指定的键[key],在Map集合中获取对应的值。
 51           返回值V:
 52             key存在,返回被删除的value值
 53             key不存在,返回null
 54      */
 55     private static void showGet() {
 56         //创建Map集合额对象
 57         HashMap<String, Integer> map = new HashMap<>();
 58         map.put("赵丽颖", 168);
 59         map.put("杨幂", 170);
 60         map.put("林志玲", 178);
 61         map.put("杨颖", 165);
 62         System.out.println(map);
 63         System.out.println("----------------------------");
 64         
 65         Integer v1 = map.get("杨颖");
 66         System.out.println("v1:" + v1);//165
 67         System.out.println("--------------------");
 68         Integer v2 = map.get("赵今麦");
 69         System.out.println(v2);//null
 70     }
 71     
 72     /*
 73         public V remove(Object key) :
 74             把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
 75             返回值V:
 76                 key存在,V返回被删除的值
 77                 key不存在,V返回null
 78      */
 79     private static void showRemove() {
 80         //创建Map集合额对象
 81         HashMap<String, Integer> map = new HashMap<>();
 82         map.put("赵丽颖", 168);
 83         map.put("杨幂", 170);
 84         map.put("林志玲", 178);
 85         map.put("杨颖", 165);
 86         System.out.println(map);
 87         System.out.println("----------------------------");
 88         
 89         Integer v1 = map.remove("杨颖");
 90         System.out.println("v1:" + v1);
 91         System.out.println(map);//{林志玲=178, 赵丽颖=168, 杨幂=170}
 92         //无序的集合,存和取的顺序可能不一致
 93         System.out.println("------------------------------");
 94         Integer v2 = map.remove("赵今麦");
 95         System.out.println("v2:" + v2);//null
 96         System.out.println(map);
 97     }
 98     
 99     /*
100        public V put(K key, V value) :
101             把指定的键与指定的值添加到Map集合中。
102             返回值V:
103             存储键值对的时候,key不重复,返回值v是null;
104             存储键值对的时候,key重复,会使用新的value替换map中重复的value,
105                             返回被替换的value
106      */
107     private static void showPut() {
108         //创建Map集合对象,多态写法
109         HashMap<String, String> map = new HashMap<>();
110         
111         String v1 = map.put("赵丽颖", "杨幂");
112         System.out.println("v1:" + v1);//v1:null
113         String v2 = map.put("赵丽颖", "杨幂1");
114         System.out.println("v2:" + v2);//v2:杨幂1
115         
116         System.out.println(map);//{赵丽颖=杨幂1} 覆写了toString()方法
117         
118         map.put("冷锋", "龙小云");
119         map.put("杨过", "小龙女");
120         map.put("金庸", "小龙女");
121         System.out.println(map);//{杨过=小龙女, 赵丽颖=杨幂1, 金庸=小龙女, 冷锋=龙小云}
122     
123     }
124 }

遍历方法

键找值的方式keySet():

Map集合的第一种遍历方式: 通过键找值的方式

Map集合中的方法: set<k> keySet(); 返回映射中包含的键的Set视图

实现步骤:

1、使用Map集合中的keySet();方法,把集合所有的key取出来, 存储到一个Set集合中;

2、遍历Set集合,获取Map集合中的每一个key;

3、通过Map集合中的方法get(key),通过key找到value。

 1 package Map集合的学习._3Map集合常用的方法._2遍历集合方式._1键找值的方式;
 2 
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Set;
 6 
 7 /**
 8  * @Author Admin
 9  * @Classname DemoMapMethod
10  * @Package Map集合的学习._3Map集合常用的方法
11  * @GreatDate 2020/04/20 22:43:29
12  * @Description TODO Map集合遍历:键找值方式
13  */
14 public class DemoMapMethod {
15     public static void main(String[] args) {
16         showKeySet();
17     }
18     
19     private static void showKeySet() {
20         //创建Map集合额对象
21         HashMap<String, Integer> map = new HashMap<>();
22         map.put("赵丽颖", 168);
23         map.put("杨幂", 170);
24         map.put("林志玲", 178);
25         map.put("杨颖", 165);
26         System.out.println(map);
27         System.out.println("----------------------------");
28         /*
29            1、使用Map集合中的keySet();方法,把集合所有的key取出来,
30               存储到一个Set集合中;
31         */
32         Set<String> set = map.keySet();
33         // 2、【使用迭代器】遍历Set集合,获取Map集合中的每一个key;
34         Iterator<String> it = set.iterator();
35         while (it.hasNext()) {
36             String key = it.next();
37             Integer value = map.get(key);
38             System.out.println(key + ‘=‘ + value);
39         }
40         System.out.println("-----------------------");
41         // 2、【使用增强for-each循环】遍历Set集合,获取Map集合中的每一个key;
42         for (String key : set) {
43             Integer value = map.get(key);
44             System.out.println(key + ‘=‘ + value);
45         }
46     }
47 }

Entry键值对对象的方式

Map集合遍历的第二种方式entrySet(): 使用Entry对象遍历

Map集合中的方法:
 Set<Map,Entry<k,v>> entrySet();//返回此映射中包含的映射关系的 Set 视图 

实现步骤:

1、使用Map集合中的方法entrySet();, 把Map集合中多个Entry对象取出来存储到一个Set 集合中;

2、遍历Set集合,获取每一个Entry对象

3、使用Entry对象中的方法getKey()和getValue()获取键和值

 1 package Map集合的学习._3Map集合常用的方法._2遍历集合方式._2Entry键值对方式;
 2 
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Map;
 6 import java.util.Set;
 7 
 8 /**
 9  * @Author Admin
10  * @Classname DemoMapMethod
11  * @Package Map集合的学习._3Map集合常用的方法._2遍历集合方式._2键值对方式
12  * @GreatDate 2020/04/21 17:24:22
13  * @Description TODO Map集合遍历:Entry键值对对象方式
14  */
15 public class DemoMapMethod {
16     public static void main(String[] args) {
17         showEntry();
18     }
19     
20     private static void showEntry() {
21         //创建Map集合额对象
22         HashMap<String, Integer> map = new HashMap<>();
23         map.put("赵丽颖", 168);
24         map.put("杨幂", 170);
25         map.put("林志玲", 178);
26         map.put("杨颖", 165);
27         System.out.println(map);
28         System.out.println("----------------------------");
29         /*
30          1、使用Map集合中的方法entrySet();,把Map集合中多个Entry对象取出来存储到
31             一个Set集合中;
32          */
33         Set<Map.Entry<String, Integer>> set = map.entrySet();
34         //2、【使用迭代器】遍历Set集合,获取每一个Entry对象
35         Iterator<Map.Entry<String, Integer>> it = set.iterator();
36         while (it.hasNext()) {
37             Map.Entry<String, Integer> entry = it.next();
38             //3、使用Entry对象中的方法getKey()和getValue()获取键和值
39             String key = entry.getKey();
40             Integer value = entry.getValue();
41             System.out.println(key + "=" + value);
42         }
43         System.out.println("-------------------------------");
44         //2、【使用增强for-each循环】遍历Set集合
45         for (Map.Entry<String, Integer> entry : set) {
46             String key = entry.getKey();
47             Integer value = entry.getValue();
48             System.out.println(key + "=" + value);
49             
50         }
51     }
52 }

综合练习

练习题

练习计算一个字符串中每个字符出现次数

分析:

  • 1.使用Scanner获取用户输入的字符串

  • 2.创建Map集合, key是字符串中的字符, value是字符的个数

  • 3.遍历字符串,获取每一一个字符

  • 4.使用获取到的字符,去Map集合判断key是否存在 key存在:
    通过字符(key),获取value(字符个数) value++
     put(key, value ) 把新的value存储到Map集合中 key不存在:put(key,1)

  • 5.遍历Map集合,输出结果

 1 package Map集合的学习._4Map集合的练习;
 2 
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 import java.util.Scanner;
 6 import java.util.Set;
 7 
 8 /**
 9  * @Author Admin
10  * @Classname ExerciseMap
11  * @Package Map集合的学习._4Map集合的练习
12  * @GreatDate 2020/04/22 12:03:56
13  * @Description TODO Map集合综合练习
14  */
15 /*
16   练习题
17     练习:计算一个字符串中每个字符出现次数分析:
18         1.使用Scanner获取用户输入的字符串
19         2.创建Map集合, key是字符串中的字符, value是字符的个数
20         3.遍历字符串,获取每一一个字符
21         4.使用获取到的字符,去Map集合判断key是否存在
22             key存在:通过字符(key),获取value(字符个数)
23             value++
24             put(key, value )把新的value存储到Map集合中
25             
26             key不存在:put(key,1)
27         5.遍历Map集合,输出结果
28  */
29 public class ExerciseMap {
30     public static void main(String[] args) {
31         //1.使用Scanner获取用户输入的字符串
32         Scanner sc = new Scanner(System.in);
33         System.out.println("请输入文本:");
34         String s = sc.next();
35         //2.创建Map集合, key是字符串中的字符, value是字符的个数
36         HashMap<Character, Integer> map = new HashMap<>();
37         //3.遍历字符串,获取每一一个字符
38         for (char c : s.toCharArray()) {
39             //4.使用获取到的字符,去Map集合判断key是否存在
40             if (map.containsKey(c)) {
41                 //key存在:通过字符(key),获取value(字符个数)
42                 //             value++
43                 Integer value = map.get(c);
44                 value++;
45                 map.put(c, value);
46             } else {
47                 //key不存在:put(key,1)
48                 map.put(c, 1);
49             }
50         }
51         //5.遍历Map集合,输出结果
52         for (Character key : map.keySet()) {
53             Integer value = map.get(key);
54             System.out.println(key + "=" + value);
55             
56         }
57     }
58 }

 

 

Map集合

原文:https://www.cnblogs.com/elvin-j-x/p/12817074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!