• 首页
  • Java
  • 浅谈 java 中的集合类 Collection

浅谈 java 中的集合类 Collection


文章目录



java中的集合类Collection

Collection是最基本的集合接口;
一个Collection代表一组Object,即Collection的元素;
它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:
添加、删除、清空、遍历(读取)、是否为空、获取大小等,如下语法.


语法

public interface Collection<E> extends Iterable<E> {}

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 进行排序,具体取决于使用的构造方法

出自:浅谈 java 中的集合类 Collection

回到顶部