导图社区 Java
这是一篇关于Java集合的思维导图,包括了Collection和Map两个部分,Collectio 有List和set这两个部分。
编辑于2022-06-07 21:06:04Java集合
Collection
List
1、是Collection子接口; 2、List集合对存入的数据允许重复,有序; 3、List集合可以通过位置对内部元素进行查询更新删除插入;
ArrayList
1、实现List接口,保证元素有序且允许重复; 2、底层基于数组实现; 3、默认长度是10,扩容机制:当存储满时,会扩容为原来的1.5倍; 有一个可以指定初始容量的构造方法,以减少扩容的次数; 4、基于底层是数组的原因,ArrayList有以下特点:对集合中的元素查询更新速度快,删除插入速度慢;
LinkedList
1、实现List接口,保证元素有序且允许重复; 2、底层基于双向链表实现; 3、基于这种数据结构,有以下特点:对集合中的元素查询更新速度慢,插入删除速度快; 4、LinkedList还特别提供了对链表开头和结尾操作的方法
Set
不允许重复
HashSet
1、实现Set接口,是Set的常用实现类; 2、HashSet集合不允许重复,且不保证元素迭代顺序,既无序; 3、默认容量是16,加载因子0.75,当存储的元素数量达到0.75*16=12时就会触发扩容,扩容为原来的2倍; 4、去重原理:利用参数的hashcode和equals完成去重; 5、HashSet集合方法中没有关于下标的操作,且没有get、set方法,即无法准确获得或者修改集合中某一个元素.(主要是利用HashSet的去重及无序原理做一些事情); 6、Hash哈希,都是随机的、无序的
TreeSet
1、特点:不允许重复,可以自然排序; 2、底层是基TreeMap实现,TreeMap底层是基于红黑树实现(二叉树); 3、去重原理:①实现comparable接口,重写comparable to()方法;返回0默认重复不存储-返回负数放在二叉树的左子树-返回正数放在二叉树的右子树;②通过创建Set时指定的比较器(Comparator)排序;
Map<K,V>
1、一次存储的是一对键(key)值(value).K,V; 2、键不能重复,每个键最多只能映射到一个值(键和值一一对应),值可以重复; 3、Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。→Map集合提供了三种方法,返回三种集合以便于获得Map中的数据;
HashMap
1、实现Map接口,也是不允许Key重复,Value可以重复; 2、底层原理:基于Hash表实现; 3、去重原理:利用元素的hashcode和equals方法进行比较去重; 4、HashMap是不保证迭代顺序无序; 5、HashMap的底层是哈希表,默认有初始容量16,加载因子0.75,当存储的元素个数达到16*0.75时,就会触发扩容,扩容为2倍;
1、元素的添加:put()→也相当于更改 2、元素的删除:remove()根据键值移除整个键值对; 3、根据键获得值:get()---没有根据值获得键的方法; 4、元素存储的个数(对数):size() 5、判断元素是否为空:isEmpty(); 6、判断是否包含键或者值: containsKey containsValue 7、三个视图方法:用于获得Map中的内容,也就是方便遍历用的;
TreeMap
1、TreeMap是Map的子实现类,TreeMap也不允许键重复,但是值可以重复; 2、底层原理:基于红黑树实现; 3、会对元素进行排序(默认是自然升序)或者在创建TreeMap时指定比较器; 4、去重原理:在存储元素时,会调用元素的comparTo方法对元素进行排序,返回0即去重,返回负数放左子树,返回正数放右子树;