Collection知识点 java java collection类_链表

文章目录

java中的集合类Collection

Collection是最基本的集合接口;

一个Collection代表一组Object,即Collection的元素;

它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:

添加、删除、清空、遍历(读取)、是否为空、获取大小等,如下语法.

语法 public interface Collection extends Iterable{}

iterator接口

不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素.

iterator 方法如下:

boolean hasNext() //如果仍有元素可以迭代,则返回 true
E next() //返回迭代的下一个元素
void remove() //从迭代器指向的集合中移除迭代器返回的最后一个元素
Iterator实例 Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) { //如果有元素可以迭代
Object obj = it.next(); // 得到下一个元素
}

继承Collection 的类

继承Collection的类有俩大分支:

一: list 有序队列

二: Set 类不可重复元素的集合

List实现的类 LinkedList 线程不安全,底层使用链表实现,查询慢,增删快,效率高

ArrayList 线程不安全,底层使用数组实现,查询快,增删慢,效率高

Vector 线程安全,底层使用数组实现,查询快,增删慢,效率低。每次容量不足时,默认自增长度的一倍

涉及到堆栈,队列等操作,应该考虑用List;

对于需要快速插入,删除元素,应该使用LinkedList;

如果需要快速随机访问元素,应该使用ArrayList

尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变

Set实现的类 HashSet 底层是由HashMap实现的,通过对象的hashCode方法与equals方法来保证插入元素的唯一性,无序(存储顺序和取出顺序不一致)

LinkedHashSet 底层数据结构由哈希表和链表组成 ,哈希表保证元素的唯一性,链表保证元素有序.(存储和取出是一致)

TreeSet 基于 TreeMap 的 NavigableSet 实现,使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法