Map集合 深藏阁楼爱情的钟 2021-11-29 12:04 421阅读 0赞 # Map集合 # # (一)Map集合 # #### 1.Map集合的特点; #### 可以储存键映射到值得对象,且一个映射不能包含重复的键,每个键最多只能映射到一个值 只和键有关和值没有关系 #### 2.Map接口和Collection接口的不同 #### Map是双列的,Collection是单列的 Map的键唯一,Collection的子体系Set是唯一的 Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 #### 3.Map集合的功能 #### 1:添加功能 V put(K key,V value):添加元素。这个其实还有另一个功能?替换 如果键是第一次存储,就直接存储元素,返回null 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值 2:删除功能 void clear():移除所有的键值对元素 V remove(Object key):根据键删除键值对元素,并把值返回 3:判断功能 boolean containsKey(Object key):判断集合是否包含指定的键 boolean containsValue(Object value):判断集合是否包含指定的值 boolean isEmpty():判断集合是否为空 4:获取功能 Set<Map.Entry<K,V>> entrySet(): 返回一个键值对的Set集合 V get(Object key):根据键获取值 Set keySet():获取集合中所有键的集合 Collection values():获取集合中所有值的集合 5:长度功能 int size():返回集合中的键值对的对数 Map键相同,值覆盖 v put(K key,V value)//键相同 值覆盖 V remove(Object key) void clear() boolean containsKey(Object key) boolean containsValue(Object value) boolean isEmpty() int size() #### 4.Map集合的遍历方式 #### 1.获取所有键的集合,遍历键的集合,获取到每一个键,然后根据键找值 public class Text { public static void main(String[] args) { HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("文学家","莫言"); hashMap.put("音乐家","贝多芬"); hashMap.put("天文学家","伽利略"); hashMap.put("数学家","华罗庚"); Set<String> set = hashMap.keySet(); for (String s : set) { System.out.println(s+"-----------"+hashMap.get(s)); } } } 2.获取所有键值对对象的集合,遍历键值对对象集合,获取到每一个键值对对象 然后根据每个键值对象找键和值 public class Text { public static void main(String[] args) { HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("文学家","莫言"); hashMap.put("音乐家","贝多芬"); hashMap.put("天文学家","伽利略"); hashMap.put("数学家","华罗庚"); Set<Map.Entry<String, String>> entries = hashMap.entrySet(); for (Map.Entry<String, String> entry : entries) { System.out.println(entry.getKey()+"-----"+entry.getValue()); } } } # (二)Map的实现类 # #### 1.HashMap #### 特点:允许插入null值和null键, 保证元素的唯一性,也要重写HashCode()和equals()方法 #### 2.LinkedMap #### LinkedHashMap的概述: Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序 LinkedHashMap的特点: 底层的数据结构是链表和哈希表 元素有序 并且唯一 元素的有序性由链表数据结构保证 唯一性由 哈希表数据结构保证 Map集合的数据结构只和键有关 #### 3.TreeMap #### 特点 TreeMap 键不允许插入null TreeMap: 键的数据结构是红黑树,可保证键的排序和唯一性 排序分为自然排序和比较器排序 线程是不安全的效率比较高 ##### A:案例演示: 需求:统计字符串中每个字符出现的次数 ##### “aababcabcdabcde”,获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1) public class Demo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请随便输入一行字符"); String line = scanner.nextLine(); HashMap<Character, Integer> hashMap = new HashMap(); for(int i = 0; i < line.length(); ++i) { char ch = line.charAt(i); if (!hashMap.containsKey(ch)) { hashMap.put(ch, 1); } else { Integer integer = (Integer)hashMap.get(ch); integer = integer + 1; hashMap.put(ch, integer); } } StringBuilder sb = new StringBuilder(); Set<Character> keySet = hashMap.keySet(); Iterator var11 = keySet.iterator(); while(var11.hasNext()) { Character key = (Character)var11.next(); sb.append(key).append("(").append(hashMap.get(key)).append(")"); } String s = sb.toString(); System.out.println(s); } } # (三)集合嵌套 # #### 1.集合嵌套之Hash Map嵌套Hash Map #### public class Demo12 { public static void main(String[] args) { // 基础班 // 20 // 李四 22 // 就业班 // 王五 21 // 赵六 23 HashMap<String, Integer> Baseclass = new HashMap<>(); Baseclass.put("李四",22); Baseclass.put("张三",20); HashMap<String, Integer> Employmentclass= new HashMap<>(); Employmentclass.put("王五", 21); Employmentclass.put("赵六",23); HashMap<String, HashMap<String, Integer>> gradeclas = new HashMap<>(); gradeclas.put("基础班",Baseclass); gradeclas.put("就业班",Employmentclass); Set<Map.Entry<String, HashMap<String, Integer>>> Maxmap = gradeclas.entrySet(); for (Map.Entry<String, HashMap<String, Integer>> M : Maxmap) { String key = M.getKey(); System.out.println(key); HashMap<String, Integer> Minmap = M.getValue(); Set<Map.Entry<String, Integer>> m= Minmap.entrySet(); for (Map.Entry<String, Integer> Min : m) { String key1 = Min.getKey(); Integer value = Min.getValue(); System.out.println(key1+"\t"+value); } } } } #### 2.集合嵌套之HashMap嵌套ArrayList #### public class Demo12 { public static void main(String[] args) { // 集合嵌套之HashMap嵌套ArrayList // // 假设HashMap集合的元素是ArrayList。有3个。 // 每一个ArrayList集合的值是字符串。 // // 三国演义 // 吕布 // 周瑜 // 笑傲江湖 // 令狐冲 // 林平之 // 神雕侠侣 // 郭靖 // // // 杨过 ArrayList<String> SG=new ArrayList<>(); ArrayList<String> XA=new ArrayList<>(); ArrayList<String> SD=new ArrayList<>(); SG.add("吕布"); SG.add("周瑜"); XA.add("令狐冲"); XA.add("林平之"); SD.add("郭靖"); SD.add("杨过"); HashMap<String, ArrayList<String>> Maxmap = new HashMap<>(); Maxmap.put("三国演义",SG); Maxmap.put("笑傲江湖",XA); Maxmap.put("神雕侠侣",SD); Set<Map.Entry<String, ArrayList<String>>> M = Maxmap.entrySet(); for (Map.Entry<String, ArrayList<String>> entry : M) { System.out.println(entry.getKey()); ArrayList<String> value = entry.getValue(); for (String s : value) { System.out.println("\t"+s); } } } } #### 3.集合嵌套之ArrayList嵌套HashMap #### public class Demo9 { // 集合嵌套之ArrayList嵌套HashMap // // 假设ArrayList集合的元素是HashMap。有3个。 // 每一个HashMap集合的键和值都是字符串。 // // 周瑜---小乔 // 吕布---貂蝉 // // 郭靖---黄蓉 // 杨过---小龙女 // // 令狐冲---任盈盈 // 林平之---岳灵珊 public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map1 = new HashMap<>(); HashMap<String, String> map2 = new HashMap<>(); map.put("周瑜","小乔"); map.put("吕布","貂蝉"); map1.put("郭靖","黄蓉"); map1.put("杨过","小龙女"); map2.put("令狐冲","任盈盈"); map2.put("林平之","岳灵珊"); ArrayList<HashMap<String, String>> Maps = new ArrayList<>(); Maps.add(map); Maps.add(map1); Maps.add(map2); for (HashMap<String, String> hashMap : Maps) { Set<Map.Entry<String, String>> set = hashMap.entrySet(); for (Map.Entry<String, String> entry : set) { System.out.println(entry.getKey()+"----"+entry.getValue()); } System.out.println(); } } } # (四)HashMap和Hashtable的区别 # HashMap: 线程不安全,效率高.允许null值和null键 Hashtable: 线程安全 , 效率低.不允许null值和null键 # (五)Collections工具类的概述和常见方法讲解 # A:Collections类概述: 针对集合操作 的工具类 B:Collections成员方法 public static void sort(List list): 排序,默认按照自然顺序 public static int binarySearch(List<?> list,T key): 二分查找 public static T max(Collection<?> coll): 获取最大值 public static void reverse(List<?> list): 反转 public static void shuffle(List<?> list): 随机置换
相关 java——集合——Map集合——Map集合的概述 ![785798b9f16983d2b4fa11f74c94630b.png][] ![c245c791968681286d734a72d714b18a.png][] [ 快来打我*/ 2024年03月31日 09:42/ 0 赞/ 119 阅读
相关 Map集合 Map集合没有继承 Collection接口,其提供的是key到value的映射。Map中不能包含相同的key值,每个key只能映射一个value,key决定了存储对象在映射中 约定不等于承诺〃/ 2022年07月19日 02:52/ 0 赞/ 225 阅读
相关 Map集合 Map Map接口是一种双列集合,它的每个元素都包含一个键对象Key和一个值对象Value,键和值对象之间存在一种对应关系,称为映射。一个映射不能包含重复的键,每个键最多 叁歲伎倆/ 2022年07月12日 04:47/ 0 赞/ 276 阅读
相关 Map集合 / Map集合:该集合存储键值对。一对一对往里存,而且保证键的唯一性。 1:添加 put(K key,V value); putAl 末蓝、/ 2022年06月17日 01:23/ 0 赞/ 221 阅读
相关 Map集合 Map集合 一、Map集合概述和特点 1,概述 \将键映射到值的对象 \一个映射不能包含重复的键 \每一个键最 我不是女神ヾ/ 2022年05月21日 13:18/ 0 赞/ 276 阅读
相关 Map集合 【前言】 1.Map 用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里key,另外一组值用于保存Map里的value,key和value都可以 ゞ 浴缸里的玫瑰/ 2022年05月19日 23:14/ 0 赞/ 290 阅读
相关 map集合 Map集合的特点: 将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值 Map集合和Collection集合的区别? Map集合存储元素 向右看齐/ 2022年05月17日 04:07/ 0 赞/ 257 阅读
相关 Map集合 Map集合 (一)Map集合 1.Map集合的特点; 可以储存键映射到值得对象,且一个映射不能包含重复的键,每个键最多只能映射到一个值 只和键有关和值没有关系 深藏阁楼爱情的钟/ 2021年11月29日 12:04/ 0 赞/ 422 阅读
还没有评论,来说两句吧...