JAVA 集合
Java集合可以分为Collection和Map两种体系:
Collertion接口
Set:元素无序、不可重复的集合
- 无序性:无序性!=随机性。真正的无序性,指的是元素在底层存储的位置是无序的。
- 不可重复性:当Set中添加进相同的元素的时候,后面的这个不能添加进去。
- 说明:要求添加进Set中的元素所在的类,一定要重写equals()和hashCode()方法。进而保证Set中的元素的不可重复性!
LinkedHashSet
- 使用链表维护了一个添加进集合中的顺序。导致当我们遍历LinkedHashSet集合元素的时候,是按照添加进去的顺序遍历的。
- 插入的性能略低于HashSet,但在迭代访问Set里的全部元素是有很好的性能。
TreeSet
- 向TreeSet中添加的元素必须是统一类型
- 可以按照添加进集合中的元素的指定的顺序遍历。例如:String,包装类等默认按照从小到大的顺序遍历。
- 当向TreeSet中添加自定义类的对象时,有两种排序方法
- 自然排序
- 定制排序
- 自然排序:要求自定义类实现Java.lang.Comparable接口并重写comparableTo(Object obj)方法,在此方法中,指明按照自定义类的哪个属性进行排序
- 向TreeSet中添加元素时,首先按照comparableTo()进行比较,一旦返回0,虽然仅两个对象的此属性值相同,但是程序会认为这两个对象是相同的,进而后一个对象就不能添加进来
- comparableTo()与hashCode()以及equals()三者保持一致
- 定制排序:
- 创建一个实现了Comparator接口的类对象
- 向TreeSet中添加‘A’类的对象,在此compare()方法中,指明是按照‘A’类的哪个属性进行排序
- 将此对象作为形参传递给TreeSet的构造器中
- 向TreeSet中添加Comparator接口中的compare方法中涉及的类对象。
- compare()与hashCode()以及equals()三者保持一致
- 创建一个实现了Comparator接口的类对象
List:元素有序、可重复的集合
ArrayList:主要实现类
- 底层原理其实是数组
LinkedList:在插入、删除操作频繁的情况下使用
- 底层原理是链表
Map接口
- 具有映射关系“key-value健值对”的集合
- key不可以重复
LinkedHashMap
- 使用链表维护添加进Map的顺序
- 遍历Map时,按照添加的顺序进行遍历
TreeMap
- 按照添加进Map中的元素的key的指定属性进行排序
- key必须是同一个类的对象
Hashtable
- 古老的实现类,线程安全,不建议使用
Properties
- 常用来处理属性文件
- 键和值都是String类型