导图社区 java集合
这是一篇关于java集合的思维导图,Java 集合(Java Collections)是 Java 语言提供的一组用于存储和操作数据的接口和类。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
集合
collection接口(单列)
1、add/remove/clear/isEmpty/addAll/removeAll/containsAll2、使用Iterator/增强for遍历
list接口
1、List集合类中元素有序,支持索引。2、add(int index, Object ele)3、get(index)/set(index,obj)/subList(from,to)4、可以使用普通for遍历
ArrayList
1、ArrayList中维护了一个Object类型的数组elementData.2、当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍。3、如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容则直接扩容elementData为1.5倍。
Vector
1、基本等同于ArrayList。Vector是线程同步的,即线程安全, Vector类的操作方法带有synchronized。ArrayList不是。2、如果是无参,默认10满后,按2倍扩容。如果指定大小,则每次直接按2倍扩容。
LinkedList
1、 底层维护了一个双向链表.2、维护了两个属性first和last分别指向首节点和尾节点3、每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表。4、线程不安全,没有实现同步
Set接口
元素不重复
HashSet
1、HashSet底层是HashMap,HashMap底层是(数组+链表+红黑树),每一个元素的value都被设置为一个固定值2、可以存放null3、不保证元素是有序的,取决于hash后,再确定索引的结果.4、元素不重复(注意这里的重复涉及到底层)
1、添加时,先得到元素的hash值,再将hash值转换成索引值。找到索引位置后,看该位置是否有元素,如果有,调用equals进行比较,如果相同则放弃添加,如果不同则与下一个元素(链表或红黑树)依次比较。2、树化机制,如果一条链表中的元素到达8并且table的大小>=64就会进行树化。3、扩容机制,第一次添加,table大小扩容为16。a)当一条链表中的元素到达8,但table大小未到达64,则将table扩大为原来2倍。b)当添加的元素到达阈值(table表大小*0.75),就将其扩大为2倍。
LinkledHashSet
底层使用双向链表,用来维护元素的次序
TreeSet
1、传入一个比较器Comparator给构造器,实现排序方式2、底层添加元素的时候,是根据compare方法的返回值确定位置,如果为0,则不添加3、底层为TreeMap
Map接口(双列)
1、put/get/remove/isEmpty/clear/containsKey/keySet/valus/entrySet2、Map 中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中,HashMap$Node实现了Map.entry接口3、key不能重复
HashMap
1、key不能重复,但是值可以重复,允许使用null键和null值。2、如果添加相同的key,则会覆盖原来的key-val ,等同于修改.(key不会替换,val会替换)3、与HashSet一样,不保证映射的顺序,因为底层是以hash表的方式来存储的.(jdk8的hashMap底层数组+链表+红黑树)4、HashMap没有实现同步,因此是线程不安全的,方法没有做同步互斥的操作,没有synchronized5、扩容、树化同HashSet
Hashtable
1、hashtable的键和值都不能为null,否则会抛出NullPointerException2、hashTable使用方法基本上和HashMap一样3、hashTable是线程安全的(synchronized), hashMap是线程不安全的
Properties
1、使用特点和Hashtable类似2、Properties还可以用于从 xxx.properties文件中,加载数据到Properties类对象,并进行读取和修改3.说明:工作后xxx.properties文件通常作为配置文件
TreeMap
1、传入一个比较器Comparator给构造器,实现排序方式 2、底层添加元素的时候,是根据compare方法的返回值确定位置,如果为0,则覆盖对应value