map集合中存放的都是一组组映射关系 key=value
和set集合方法使用都差不多 但map可以在集合中允许嵌套
常见方法 1、增加 put(K key, V value) putAll(Map<? extends K,? extends V> m) 2、删除 clear() remove(Object key) 3、判断 containsKey(Object key) containsValue(Object value) isEmpty() 4、获取 get(Object key) size() values() entrySet() keySet()put
添加集合元素的同时,它可以编辑原有的元素 如果说集合中没有key对应的value,那么久住集合中添加元素 如果说集合中对应的key有value值,则代表替换原有的值返回替换前key对应的value值entrySet ,keySet 是map特有的遍历的方法 但他们的区别就是 entrySet打印取值 (entry 是一个类) 要把键值一对对都找到能打印出来 而keySet可以根据键一一找到值打印输出
在后面之所以乘上数字,是防止键值相加起来和别的键值相加起来是一样的,而被去重复
public int hashCode() { return this.getName().hashCode()+this.getAge()*12; }它的使用方法和我的上一篇set篇里的TreeSet一样,详情请看我的上一篇
map集合中的泛型要使用包装类,或者是引用数据类型
统计字符串中字符出现次数@author Administrator思考:1.统计出现次数 2.在根据字母排序统计功能1’将字符串转为字符数组,将这个字符串中的字符当做map集合中的key,将出现的次数最为value值2’将字符第一次出现的时候,那么用在它的集合中进行寻找,返回值必然为null,之后将字符对应的值改为13’如果说该字符不是第一次出现,该字符对应的值不为null并且 +1先自定义一个count方法,再重写
代码如下
private static String count(String str) { char[] charArray = str.toCharArray(); Map<Character, Integer> map = new TreeMap<>(); for (char c : charArray) { Integer value = map.get(c); if (value == null) { map.put(c, 1); }else { map.put(c, ++value); } } StringBuffer sb = new StringBuffer(); for (Map.Entry<Character, Integer> entry : map.entrySet()) { sb.append(entry.getKey()+"("+entry.getValue()+")"); } return sb.toString(); } 小结: Map Hashtable:底层是哈希表数据结构,不可以存入null键null值,该集合石线程同步的,jdk1.0,效率低 HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。将Hashtable替代;jdk1.2,效率高 TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序 注意: 添加元素时,如果键已经在集合中存在,那么后添加的值会覆盖原来的值,并且put方法会将原有的值返回