二. java中的集合
image.png
Collection和Iterator接口
Collection是List、Set、和Queue接口的父接口。该接口定义有如下通用方法
-
boolean add(Object o):向集合中加入一个对象的引用 -
void clear():删除集合中所有的对象,即不再持有这些对象的引用 -
boolean isEmpty():判断集合是否为空 -
boolean contains(Object o): 判断集合中是否持有特定对象的引用 -
Iterartor iterator():返回一个Iterator对象,可以用来遍历集合中的元素 -
boolean remove(Object o):从集合中删除一个对象的引用 -
int size():返回集合中元素的数目 -
Object[] toArray(): 返回一个数组,该数组中包括集合中的所有元素
关于:Iterator()和toArray()方法都用于集合的所有的元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组
1. Set集合
集合是无序的,不能记住添加元素的顺序。也不能添加重复元素
HashSet类
按Hash算法来存储集合中的元素,具有很好的存取和查找性能。
- 集合中的元素可以为null
- 不能同步,多线程访问时,必须通过代码来保证其同步。
- 判断元素相等的标志是
equals()方法比较相等,并且两个对象的hashCode()也相等。
LinkedHashSet:使用链表维护集合中的顺序,可以按添加的顺序访问集合。
TreeSet类
TreeSet是SortedSet接口的实现,可以确保元素处于排序状态。采用红黑树的数据结构存储。
- 自然排序:将元素集合按升序排列
- 定制排序:在创建
TreeSet时,需要传入一个Comparator对象。 - 将一个对象添加在
TreeSet中,该对象必须实现Comparable接口。 - 添加的元素应该是同一个类
-
TreeSet判断对象不相等的唯一标准是:compareTo()返回0,不是看equals()
EnumSet类
是有序的,顺序是按枚举类内部定义的顺序排列。
以位向量的形式存储,占用空间小,运行效率高。
2. List集合
List集合有序、可重复。元素在指定连续的索引上,索引从0开始。
- Vector 不常用,比较久。线程安全的
3. Queue集合
用于模拟队列,先进先出。通常不允许随机访问队列内元素。
PriorityQueue实现类
不是按加入顺序排序,而是按照元素大小进行排序
ArrayDeque实现类
即可以当做队列,也可以当做栈使用。
LinkedList实现类
可以和list一样随机访问,也可以当做栈、队列使用











网友评论