HashMap集合
1、HashMap示意图:
HashMap是一个散列表,它存储的方式是键值对的映射-> key:vlaue
HashMap实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步
HashMap是无序的,既不会记录插入的顺序
HashMap继承于AbstractMap,实现Map、Cloneable、Java.io.SErializable接口
HashMap在解决哈希冲突是有了较大变化,当链表长度大于阈值时(默认值为8),将链表转换为红黑树(将链表转换成红黑树前会判断,如果当前数组的长度小于64,那么会选择先选择进行数组扩容,而不是转换为红黑树),以减少搜索时间。
二、HashMap的特点:
1、底层是链接+数组,JDK1.8粥又加了红黑树
2、存储的是key-vlaue类型的数据
3、key值不允许重复,可以重复会被覆盖掉,value可以重复
4、数据存储无序:无序指的是插入顺序和取出的顺序是不一致的
5、key和value都允许为空,但是只能允许有一个空的key
三、HashMap常用的方法:
1、.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中
2、.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。
3、. size() 返回Map集合中数据数量,准确说是返回key-value的组数。
4、.clear() 清空Map集合
5、.isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false
6、.remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值
7、.containsKey(Object key) Hashmap判断是否含有key
8、.containsValue(Object value) Hashmap判断是否含有value
9、Hashmap添加另一个同一个类型的map下的所有数据:
public class Test {
public static void main(String[] args) {
HashMap<String, Integer> map=new HashMap<>();
HashMap<String, Integer> map1=new HashMap<>();
/*void*///将同一类型的map添加到另一个map中
map1.put("DEMO1", 1);
map.put("DEMO2", 2);
System.out.println(map);//{DEMO2=2}
map.putAll(map1);
System.out.println(map);//{DEMO1=1, DEMO2=2}
}
}
运行结果:
{DEMO2=2}
{DEMO1=1,DEMO2=2}
10、Hashmap替换这个key的value:
public class Test {
public static void main(String[] args) {
HashMap<String, Integer> map=new HashMap<>();
/*value*///判断map中是否存在这个key
map.put("DEMO1", 1);
map.put("DEMO2", 2);
System.out.println(map);//{DEMO1=1, DEMO2=2}
System.out.println(map.replace("DEMO2", 1));//2
System.out.println(map);//{DEMO1=1, DEMO2=1}
}
}
运行结果:
{DEMO1=1,DEMO2=2}
2
{DEMO1=1,DEMO2=1}
TreeMap集合
一、TreeMap的特点:
1、TreeMap是一个有序的key-value集合,他是通过红黑树实现的
2、无序,不允许重复 (无序只元素顺序于添加的顺序不一致)
3、treeMap的key是有序的
4、TreeMap集合默认会对键进行排序,所以键必须是实现自然排序和定制排序中的一种
(1):自然排序(按照字典表进行排序)
(2):定制排序
二、TreeMap基本使用:
大家可以参考这个博客,写得十分详细哦!