Collection & Collections Part 1/2: Collection

原创 2016年06月01日 14:28:32

Collection & Collections Part 1/2: Collection

目录


Overview

Collection和Collections是刚开始学习Java时容易混淆的两个”类”。

  • Collection是一个接口,供各集合类实现。
  • Collections是一个类,里面的方法都是static的,它是一个工具类,所有的方法都对Collection进行操作。

之前几篇博文已经详细阅读了ArrayList,LinkedList,HashSet以及HashMap的源码,这篇博文总结下Collection类。

Collection家族的族谱如下:

Collection


List

List可以看做更灵活的数组,特点如下:

  1. 元素有序
  2. 元素可重复
  3. 元素可以通过在List中的位置(索引)进行访问插入

实现类: ArrayList, LinkedList, Vector。

  • ArrayList
    • 基础数据结构是数组。
    • 可以根据存储元素的数量自动地伸缩自身的size。
    • 由于数组中元素的插入删除涉及到大量元素的前移或后移,效率不高,此时最好不要用ArrayList;由于数组中元素可以根据索引直接找到,所以访问的效率很高,此时推荐使用ArrayList。
    • 线程不安全,多线程环境不推荐使用。
  • LinkedList

    • 基础数据结构是链表
    • LinkedList实现了Stack, Queue(Deque)的功能。
    • 由于链表中元素的访问需要从表头开始遍历,时间复杂度为O(N),所以此时最好不要用LinkedList;由于链表中的元素的插入删除只需改变指针的指向,O(1)即可完成,此时推荐使用LinkedList。
    • 线程不安全,多线程环境不推荐使用。
  • Vector

    • 基础数据结构也是数组。
    • 与ArrayList一样,不适用元素的插入删除,适用于元素的访问
    • 线程安全,不过Vector已经很少使用了。

Set

Set的特点如下:

  1. 元素不可重复

Set的基础数据结构是Map, 因为MapEntry中key的值必须唯一,所以Set中的value存储在MapEntry中的key处,而忽略MapEntry中的value,通过这种方式达到Set中元素无重复。

实现类(均线程不安全): HashSet, LinkedHashSet, TreeSet。

  • HashSet

    • 基础数据结构是HashTable。
    • 不保证元素的顺序。
    • 实现类中性能最好。
  • LinkedHashSet

    • 基础数据结构是HashTable。
    • 保证元素的顺序(按照插入的元素的顺序排序)。
  • TreeSet

    • 基础数据结构是Red-Black Tree。
    • 保证元素的顺序(按照插入的元素的值)。
    • 比HashSet慢很多。

Map

Map的特点如下:

  1. 把Key映射成Value。
  2. Key不可重复。

实现类: HashMap, HashTable, TreeMap。

  • HashMap

    • 不保证插入的顺序。
    • Key可为null
    • 线程不安全。
  • HashTable

    • 不保证插入的顺序。
    • Key不可为null
    • 与HashMap的一个重要差别就是HashTable是线程安全的。
    • 现在已经很少使用HashTable了。
  • TreeMap

    • 基础数据结构是红黑树。
    • Key可为null
    • 保证元素的顺序(可以指定排序规则)。
    • 线程不安全。

Summary

  • ArrayList, LinkedList和Vector

    • 如果元素数目固定不变,使用Array。
    • 如果元素数目会变化:
      • 访问/查询 操作频繁,且不用考虑线程安全,使用ArrayList。
      • 插入/删除 操作频繁,且不用考虑线程安全,使用LinkedList。
      • 考虑线程安全,请使用 java.util.concurrent 包下的线程安全集合类。
    • Vector类已很少使用。
  • HashSet/HashMap和TreeSet/TreeMap

    • 希望元素有序,请使用TreeSet/TreeMap。
    • 否则还是使用HashSet/HashMap,效率比较好。
    • 考虑线程安全,请使用 java.util.concurrent 包下的线程安全集合类。
版权声明:本文为博主原创文章,未经博主允许不得转载。

collection和collections的区别

Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程...
  • simple_smile_sun
  • simple_smile_sun
  • 2016年07月07日 11:01
  • 1125

Java Collection与Collections详解

实现compareTo接口:用于对象比较 里面有:里面有2个方法; 如果是Integer类型进行比较的话则: 1.其中Integer,和 eg: Integer a = 10 ,b=...
  • androidstarjack
  • androidstarjack
  • 2015年03月09日 18:11
  • 1308

介绍Collection框架的结构;Collection 和 Collections的区别

集合框架: Collection:List列表,Set集 Map:Hashtable,HashMap,TreeMap   Collection  是单列集合 List   元素是有序的、可重复 有序的...
  • ITzhanghao
  • ITzhanghao
  • 2015年07月13日 17:43
  • 6139

面试题:Java中Collection与Collections的区别

1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是...
  • xiaoyu714543065
  • xiaoyu714543065
  • 2012年10月28日 21:28
  • 3259

android 中collection和collections

其实应该是Java中的collection和collections,以前都只是见到过collection和collections,但是没用过,只知道是一种集合,今天去面试被问到这个,开了个黄腔,回来查...
  • smallFish_lin
  • smallFish_lin
  • 2015年04月15日 14:51
  • 1423

Java中Collections学习

一直没有专门看看Collections到底能做什么。前几天导师还问到了这个问题。 现在学习总结一下: Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collectio...
  • imzoer
  • imzoer
  • 2013年07月23日 10:00
  • 3769

Collection与Collections工具类

Collection与Collections的区别 Collection是集合操作的接口 Collections是集合操作的工具类,可以进行List、Set、Map集合的操作...
  • u012369153
  • u012369153
  • 2016年11月01日 10:53
  • 380

常用JAVA集合框架(Collection、List、Set、Map)

1.常用集合框架结构 2. List   2.1 ArrayList List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List ...
  • sdauzxl
  • sdauzxl
  • 2016年07月29日 20:17
  • 1959

Collection & Collections Part 2/2: Collections

Collection & Collections Part 2/2: Collections 目录 Collection Collections Part 22 Collections 目...
  • iorichang
  • iorichang
  • 2016年07月02日 15:53
  • 130

黑马程序员——集合(上)(Collection及子类)

------- android培训、java培训、期待与您交流! ----------
  • masai158
  • masai158
  • 2014年08月07日 08:49
  • 898
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Collection & Collections Part 1/2: Collection
举报原因:
原因补充:

(最多只允许输入30个字)