Java的集合主要由Collection[接口,单列集合]和Map[接口,双列集合]构成。
List,Set集合[Collection的子接口]
List:是一个接口,需要被实现,可以插入null,元素可重复。常用实现类如下:
-
ArrayList:底层数据结构是数组,线程不安全,可以存储重复元素
-
LinkedList:底层数据结构是链表,线程不安全,可以存储重复元素
-
Vector:底层数据结构是数组,线程安全,可以存储重复元素
Set:是一个接口,需要被实现,可以插入一个null,元素不可重复。常用实现类如下:
-
HashSet:底层数据结构是哈希表,线程不安全,不可以存储重复元素,基于HashMap实现。
-
LinkedHashSet:底层数据结构采用链表和哈希表共同实现,线程不安全,不可以存储重复元素
-
TreeSet:底层数据结构是红黑树,线程不安全,不可以存储重复元素,基于TreeMap实现。
会排序。分为自然排序(无参构造)和比较器排序(有参构造)。
自然排序要求元素必须实现Compareable接口【像基本类型,String类型都实现了Compareable接口的】,并重写里面的compareTo()方法,元素通过比较返回的int值来判断排序序列,返回0说明两个对象相同,不需要存储;
比较器排需要在TreeSet初始化是时候传入一个实现Comparator接口的比较器对象,或者采用匿名内部类的方式new一个Comparator对象,重写里面的compare()方法;
数组与List之间转换
数组——>List:Arrays.asList(array)
List——>数组:List实例.toArray()
集合实现自定义排序
方法一:
如果该集合元素不重复,都是些基本类型或者String类型,那么可以用TreeSet实现,能自动排序。
如果该集合元素不重复,都是引用类型,那么需要通过比较器来实现。
方法二:
采用CollectionUtils.sort方法进行排序
https://www.cnblogs.com/itlihao/p/14947978.html
Map集合[接口]
Map:是一个接口,需要被实现,键不可重复。常用实现类如下:
- HashMap:
- TreeMap:
- HashTable: