java-16(3)-Map集合
来源:互联网 发布:大连东华软件股份公司 编辑:程序博客网 时间:2024/06/05 21:36
1.Map集合
一次添加一对元素,称为双列集合,Collection一次存储一个元素,称为单列集合。其实Map集合中存储的是键值对,Map集合必须保证键的唯一性。
2.Map集合常用的方法:
1.添加: value put(key,value);返回前一个和key关联的值,如果没有就返回null.2.删除: void clear();清空map集合 value remove();根据指定的key删除这个键值对,并返回值。3.判断: boolean containsKey(key); boolean containsValue(value); boolean isEmpty();4.获取; value get(key); 通过键拿值,如果没有该键就返回null;可以通过返回null,来判断是否包含指定键。 int size();获取键值对的个数。
3.Map集合如何取出元素。
在Map集合中是没有迭代器的,所以它要取出元素,必须经过一系列的转化。这里有三种方式:1.Collection<V> values();返回此映射中包含的值得Collection视图。2.Set<V> KeySet();返回此映射中包含键的Set视图。3.Set<Map.Entry<K,V>> entrySet();返回此映射中包含的映射关系的Set视图。
public static void main(String[] args){ Map<Integer,String> map = new HashMap<>(); method1(map); method2(map); method3(map); }
(1).Collection values();方式
public static void method1(Map<Integer, String> map) { map.put(8,"WangWu"); map.put(2,"Zhaoliu"); map.put(7,"XiaoQiang"); map.put(6,"WangCai"); Collection<String> values = map.values(); for(Iterator<String> it = values.iterator();it.hasnext;){ System.out.println(it.next()); }}
(2)
/*Set<Map.Entry<K,V>> entrySet();原理:该方法将键和值的映射关系作为对象存储到Set集合中,而这个映射关系的类型就是Map.Entry类型。*/public static void method2(Map<Integer, String> map) { map.put(8,"WangWu"); map.put(2,"Zhaoliu"); map.put(7,"XiaoQiang"); map.put(6,"WangCai"); Set<Map.Entry<Integer,String>> keySet = map.entrySet(); for(Iterator<Map.Entry<Integer,String>> it = keySet.iterator();it.hasnext;){ Map.Entry<Integer,String> me = it.next(); Integer key = me.getKey(); String value = me.getValue(key); System.out.println(key+":"+value); }}
(3)
/*Set<V> KeySet();原理:通过keySet方式获取map中所有的键所在的set集合,再通过Set的迭代器获取到每一个键,再对每一个键获取对应的值即可。*/public static void method2(Map<Integer, String> map) { map.put(8,"WangWu"); map.put(2,"Zhaoliu"); map.put(7,"XiaoQiang"); map.put(6,"WangCai"); Set<Integer> keySet = map.keySet(); for(Iterator<Integer> it = keySet.iterator();it.hasnext;){ Integer key = it.next(); String value = map.get(key); System.out.println(key+":"+value); }}
4 Map常用的子类:
HashTable:内部数据结构是哈希表是同步的,不允许null作为键,null作为值。 Properties:用来存储键和值对型的配置文件的信息,可以与IO技术相结合。HashMap:内部数据结构是哈希表,不同步。不允许null作为键,null作为值。 LinkedHashMap:内部数据结构是链表和哈希表,可以实现存取一致(顺序)。TreeMap:内部数据结构是二叉树,不同步。可以对集合中的键进行排序。
5.MapTest
/** 练习* "fdgavcbsacdfs"获取该字符串中,每一个字母出现的次数。* 要求打印结果为:a(2)b(1)...* 思路;* 1.首先 因为操作的是字符串中的字母,所以将字符串转换为字符数组。* 2.然后观察到字母和该字母出现的次数存在一一对应的关系。这里可以想到用Map或者数组。但是出现的次数是无序的,所以要使用Map集合。* 又因为打印结果是按照一定顺序的,所以想到TreeMap集合,字母作为键,出现的次数作为值。* 3.把字符数组中的每个元素取出查Map表,如果该键没有在表中,则把该键和对应的值(1)存入。如果该键存在,那么将该键对应的值取出自增1后,* 再存入Map表中。* 4.当字符数组遍历完成后,Map表中就存储了全部字母出现的次数。* 5.然后把Map表按照特定的方式转成字符串输出。***/ public static void main(String[] args){ String str = "fdg3//avi249cccb++sac565dfs"; str = getCharCount(str); System.out.println(str); } public static String getCharCount(String str) { //将字符串转为字符数组。 char[] chs = str.toCharArray(); //创建Map表 TreeMap<Character,Integer> map = new TreeMap<>(); //取出元素进行查表 for (int i = 0; i < chs.length; i++) { if (!(chs[i] >= 'a' && chs[i] <= 'z')||(chs[i] >= 'A' && chs[i] <= 'Z')) { continue; } Integer value = map.get(chs[i]); if ( value == null){ //表中没有该元素,直接插入。 map.put(chs[i],1); }else{ //表中存在该元素,把value取出+1然后在进行存入 map.put(chs[i],++value); } } //把map表转为特定的字符串 String st = getMapSring(map); return st; } private static String getMapSring(TreeMap<Character, Integer> map) { StringBuilder sb = new StringBuilder(); //遍历map表 /*for (Iterator<Map.Entry<Character,Integer>> it = map.entrySet().iterator();it.hasNext();){ Map.Entry<Character,Integer> me = it.next(); Character key = me.getKey(); Integer value = me.getValue(); sb.append(key+"("+value+") "); }*/ //遍历map表foreach for (Map.Entry<Character,Integer> me:map.entrySet()) { Character key = me.getKey(); Integer value = me.getValue(); sb.append(key+"("+value+") "); } return sb.toString(); }
阅读全文
0 0
- java-16(3)-Map集合
- Java 集合Map --16
- Java基础16-集合Map
- Java基础16:map集合;
- JAVA集合-Map集合
- java集合------Map集合
- Java集合----Map集合
- 集合3--Map集合
- java集合------Map集合总结
- Java集合之-Map集合
- Java集合—Map集合
- java集合----------Map
- java笔记 Map集合
- java------集合Map
- java遍历Map集合
- java Map集合练习
- java集合(Map)
- java 遍历map集合
- Tab页切换时页面自动刷新效果
- B
- 拖动应用缩略图进入分屏模式流程
- jvm探秘五:Class类文件结构之属性表
- Lua 接口(Interface)实现方式之一
- java-16(3)-Map集合
- Linux入门基础(1)
- python参数传递
- 欢迎使用CSDN-markdown编辑器
- 《Spark大数据处理:技术、应用与性能优化》【PDF】
- java线程死锁例子及解决方法
- C
- mfc listctrl控件自动排序
- Serverless会是一场云计算的革命吗