Java Map集合:键值对操作全解析
Hello大家好呀我是Yize今天我们开始学习Map集合双列集合至于上次说的数据结构我们后面在说现在我们开始目录双列集合的特点及常用API双列集合的特点Map常用APIMap集合的三种遍历方式键找值键值对Lambda表达式Map分支HashMapLinkedHashMapTreeMap经典例题双列集合的特点及常用API双列集合的特点①双列集合一次需要存一对数据分别为键和值②键不能重复值可以重复③ 键和值是一一对应的每一个键只能找到自己对应的值④键值这个整体我们称之为“键值对”或者“键值对对象” ,在Java中叫做Entry对象”Map常用API其中put方法添加数据时如果键不存在那么直接将键值对对象添加到map集合中方法返回null如果键存在那么会把原有的键值对对象覆盖会把被覆盖的值进行返回Map集合的三种遍历方式键找值MapString,String map new HashMap(); map.put(灰太狼,红太狼); map.put(武大郎,潘金莲); map.put(贾乃亮,李小璐); //键找值 /将map中的键拿出来装进Set集合中/ SetString str map.keySet(); //迭代器遍历集合 IteratorString it str.iterator(); while(it.hasNext()){ String i it.next(); /利用get方法获取当前键的值/ String s map.get(i); System.out.println(i s); }键值对MapString,String map new HashMap(); map.put(灰太狼,红太狼); map.put(武大郎,潘金莲); map.put(贾乃亮,李小璐); //键值对 /利用map集合调用entrySet方法获取所有键值对的对象放入Set集合当中/ SetMap.EntryString, String entry map.entrySet(); for (Map.EntryString, String en : entry) { String s1 en.getKey(); String s2 en.getValue(); System.out.println(s1 s2); }Lambda表达式MapString,String map new HashMap(); map.put(郭靖,小龙女); map.put(武大郎,潘金莲); map.put(贾乃亮,李小璐); //lambda表达式遍历Map集合 map.forEach(( key, value) - System.out.println(key value));Map分支HashMap特点① HashMap是Map里面的一个实现类。②没有额外需要学习的特有方法直接使用Map里面的方法就可以了。③特点都是由键决定的无序、不重复、无索引④ HashMap跟HashSet底层原理是一模一样的都是哈希表结构注意点HashMap的键位置如果存的是自定义对象需要重写hashCode和equals方法LinkedHashMap特点有序不重复无索引原理底层数据依然是哈希表只是每个键值对元素又额外多了一个双链表的机制记录存储的顺序与LinkedHashSet类似TreeMap特点可排序不重复无索引对键进行排序默认从小到大排序原理与TreeSet类似底层数据结构都是红黑树与TreeSet一样有两种排序规则实现Comparable接口指定比较比较创建集合对象的时候传递Comparator比较器对象指定规则比较经典例题统计一个字符串里每个字符出现的次数按次数进行排序//统计字符串中每个字符出现的次数,按照字符出现次数排序 String str ahvxldhbvlzshdvhbhaklanhaj; //统计每个字符出现的次数 TreeMapCharacter,Integer tr new TreeMap(); for (int i 0; i str.length(); i) { char s str.charAt(i); if(tr.containsKey(s)){ int count tr.get(s); tr.put(s,count1); }else{ tr.put(s,1); } } //再次创建一个TreeMap利用tr调用get()获取键对应的值进行排序 TreeMapCharacter,Integer tr2 new TreeMap((o1,o2)-tr.get(o2)-tr.get(o1)); tr2.putAll(tr); //遍历tr2将字符和出现次数添加到StringBuilder中 StringBuilder sb new StringBuilder(); for (Character key : tr2.keySet()) { sb.append(key).append(出现了).append(tr2.get(key)).append(次).append(\n); } System.out.println(sb);注意点在第一个TreeMap中无法进行传递Comparator进行指定规则因为获取不到集合在第二个TreeMap集合中利用get()方法获取到键所对应的值从而进行比较好啦本期的学习到此结束我们下次见
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2432544.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!