快捷搜索: 王者荣耀 脱发

Java集合类之Collection接口及其子接口

Collection接口

在Java的类集里面(java.util包)提供了两个最为核心的接口:Collection、Map接口。 Collection是单个集合保存的最大父接口

Collection接口继承树:

Collection接口常用方法:

1. add(E e) : 向集合中添加元素 2. addAll(Collection<? extends E> c) : 向集合中添加一组数据 3. clear() :清空集合数据 4. contains( Object o) : 查找数据是否存在.(需要使用equals()方法). 5. remove( Object o) : 删除数据.(需要使用equals()方法). 6. size() : 取得集合长度 7. toArray() : 将集合变为对象数组返回 8. iterator() : 取得Iterator接口对象,用于集合输出.

在实际开发中,我们很少直接使用Collection接口,往往考虑使用它的子接口: List(允许数据重复),Set(不允许数据重复)和Queue

下面我们先来看看List接口:

List接口:

List接口提供了两个扩充方法:

  1. get(int index) : 根据索引取得保存数据
  2. set(int index,E element) : 修改数据

List本身还是接口,想要取得接口的实例化对象,就必须有子类,在List接口下有三个常用子类:ArrayList, Vector (不常用), LinkedList.

ArrayList和Vector的区别?

  1. 时间:ArrayList时JDK1.2开始提供的,Vector是从JDK1.0开始提供的.
  2. 安全性:ArrayList采取异步处理,性能较高,线程不安全,Vector采取同步处理,性能较低,线程安全.
  3. 输出形式:ArrayList支持Iterator, ListIterator, foreach ,Vector支持Iterator, ListIterator, foreach ,Enumerator.

ArrayList和LinkedList的区别?

  1. ArrayList基于动态数组实现,LinkedList基于链表实现.
  2. 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针,
  3. 对于添加(add)和删除(remove)操作LinkedList要优于ArrayList,因为ArrayList要移动数据.

Set接口:

Set接口中没有get()方法 在Set接口下有两个常用子类:HashSet(无序存储),TreeSet(有序存储)

1.HashSet

HashSet不能保证元素的排列顺序,不是同步的,集合元素可以是null但是只能放入一个null, HashSet判断两个元素相等的标准是equals()相等,并且hashCode()返回值相等.

2.TreeSet TreeSet支持两种排序方式:1.自然排序 2.定制排序.

a.自然排序: 自然排序使用CompareTo(Object obj)方法来比较元素之间大小关系,然后将元素按照升序排列。 obj1.compareTo(obj2)方法,返回0,则说明被比较的两个对象相等, 返回一个正数,则表明obj1大于obj2,返回负数,则表明obj1小于obj2。

b.定制排序: 使用Comparator接口,实现 int compare(To1,To2)方法

Queue

除了Collection接口中基本操作外,Queue还提供了其它的插入、获取和检查操作。

  1. boolean add(E e) : 插入指定元素, 操作成功返回true.如果当前没有空间可用,抛出一个IllegalStateException
  2. boolean offer(E e) : 插入指定元素, 操作成功返回true, 失败返回false. (在有容量限制的队列中,这个方法比add()更好.)
  3. E remove() :检索并删除队列的头部元素,还将它返回队列,为空时抛出异常。
  4. E poll():检索并删除队列的头部元素,并将它返回,队列为空时返回null。
  5. E element():检索并返回头部元素,队列为空时,抛出出异常.
  6. E peek() : 检索并返回头部元素,队列为空时,返回null。

PriorityQueue类

非线程安全, PriorityQueue保存队列元素的顺序并不是按照加入队列的顺序,而是按队列元素的大小重新排序。当调用peek()或者是poll()方法时,返回的是队列中最小的元素。当然也可以自定义排序.

经验分享 程序员 微信小程序 职场和发展