首页 > 代码库 > java集合
java集合
这里对java中常用的集合做一个小结
单列集合:Collection 单列集合的根接口
List系列:有序,不唯一
1,ArrayList 底层使用Object数组,查询快,插入删除慢
2,LinkedList 底层使用链表数据结构,查询慢,增删快,有removeLast()方法,而ArrayList中没有
3,Vector底层也采用Object数组,但是是线程安全的,操作效率低
Set系列:无序,唯一
1,HashSet 底层采用哈希表,存取速度快
存储原理:当一个元素添加进hashSet时,会先调用该对象的hashCode方法得到哈希码值,将哈希码值通过计算得到该对象的存储位置,如果这个位置没有元素,那么该对象会被存储,如果有元素会调用该对象的equals方法
返回true则该对象不会被存储,因此存入进hashSet中的对象一般会重写hashCode和equals方法
2,TreeSet 底层采用红黑树,对存储进该集合中的元素进行排序存储
TreeSet添加元素:如果添加的元素有自然顺序,那么TreeSet会按元素的自然顺序进行排序存储
如果添加的元素没有自然顺序,那么添加的对象排序时需要一个比较器
内部比较器:定义在自定义类的内部,实现Comparable接口
外部比较器:定义在自定义类的外部的自定义比较器类,实现Comparator接口,在创建TreeSet对象时传入一个自定义比较器类对象
双列集合:Map 双列集合的根接口, 存储key-value键值对,键不可重复,值可重复
1,HashMap:底层也是hash表
2,TreeMap:底层采用红黑树
3,HashTable:线程安全,底层采用hash表,HashMap是其轻量级实现但是线程不安全
java集合