您的位置:首页 > 其它

Map集合简介

2019-05-22 20:21 85 查看

Map集合

map集合中存放的都是一组组映射关系 key=value

初识map

和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

  1. 添加集合元素的同时,它可以编辑原有的元素
    如果说集合中没有key对应的value,那么久住集合中添加元素
    如果说集合中对应的key有value值,则代表替换原有的值
  2. 返回替换前key对应的value值


entrySet ,keySet 是map特有的遍历的方法
但他们的区别就是 entrySet打印取值 (entry 是一个类) 要把键值一对对都找到能打印出来
而keySet可以根据键一一找到值打印输出

在后面之所以乘上数字,是防止键值相加起来和别的键值相加起来是一样的,而被去重复

public int hashCode() {
return this.getName().hashCode()+this.getAge()*12;
}

TreeMap

它的使用方法和我的上一篇set篇里的TreeSet一样,详情请看我的上一篇

HashMap

map集合中的泛型要使用包装类,或者是引用数据类型

  • 统计字符串中字符出现次数
  • @author Administrator
  • 思考:
  • 1.统计出现次数 2.在根据字母排序
  • 统计功能
  • 1’将字符串转为字符数组,将这个字符串中的字符当做map集合中的key,将出现的次数最为value值
  • 2’将字符第一次出现的时候,那么用在它的集合中进行寻找,返回值必然为null,之后将字符对应的值改为1
  • 3’如果说该字符不是第一次出现,该字符对应的值不为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方法会将原有的值返回
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: