Java面向对象
Java异常
Java数组
Java常用类
Java集合
Java IO流
Java线程
Java反射
Socket编程
Java注解开发
Java GoF设计模式
HashMap
Java内存模型
Java线性表

Java Collection集合小结

Collection集合

只能存储引用类型的数据, 单个存储

基本操作:  add(), remove(), contains(), size(), iterator()

List集合

特点: 存储的元素是有序,可重复的

为每个元素指定一个索引值

增加的方法, 针对索引值的操作, listIterator(),  subList(),  sort(Comparator)

ArrayList集合

底层是数组, 访问快, 添加/删除效率低

初始化容量: 10,  扩容: 1.5倍

Vector集合

底层是数组, 它是线程安全的, ArrayList不是线程安全的

初始化容量: 10,  扩容: 2倍

LinkedList集合

底层是双向链表, 添加/删除效率高, 访问慢

List集合应用场景

ArrayList适用于以访问为主, 很少添加/删除的情况

LinkedList适用于经常添加/删除的情况

Set集合

特点: 数据无序,不可重复

HashSet集合

底层是HashMap, HashSet实际上就是HashMap键的集合

TreeSet集合

底层是TreeMap, TreeSet实际上就是TreeMap键的集合

TreeSet实现了SortedSet接口, 可以对元素自然排序, 要求元素必须是可比较的:

● 在构造方法中指定Comparator比较器对象

● 如果没有Comparator比较器, 集合元素的类必须实现Comparable接口

Set集合的应用场景

如果不需要对Set集合进行排序就选择HashSet

如果需要对Set集合的元素进行排序就选择TreeSet

注意:

List集合/HashSet集合的contains( e ) / remove( e )等方法需要调用对象的equals()方法, 这些集合中的元素的类需要重写equals()方法

TreeSet集合中contains( e )/  remove( e) 等方法判断是否同一个对象是根据Comparator/Comparable的比较结果是否为0来判断的, 如果比较结果为0表示同一个元素