初学java,单个的接触有点迷糊,所以总结下他们的关系

一、关系

Collection

--List:以特定顺序存储

--ArrayList、LinkList、Vector

--Set:不能包含重复的元素

--HashSet、TreeSet

Map

--HashMap、HashTable、TreeMap

二、分别讲解

Collection:Collection是一个父接口,List和Set是继承自他的子接口,Collection是最基本的集合接口,Java SDK中不提供直接继承                    自Collection的类,而是提供继承自他子接口的类,如List何Set。所用的Collection类都支持一个Iterator()方法来遍历。

List:List接口是有序的,会精确的将元素插入到指定的位置,和下面的Set接口不同,List接口允许有相同元素

ArrayList:实现可变大小的数组,允许所有的元素,不是同步的,也就是没有同步方法

LinkList:允许null元素,通常在首部或者尾部操作,所以常被使用做堆栈(stack)、队列(queue)和双向队列(deque)

Vector:类似于ArrayList,但Vector是同步的,Stack继承自Vector

Set:是一种不包含重复元素的Collection接口

HashSet:不能有重复元素,底层是使用HashMap来实现的

Map:此接口实现的Key到Value的映射,一个Map中不能包含相同的Key,每个Key只能映射一个Value

HashTable:实现了一个Key-Value的哈希表,每一个非null元素都可作为Key或者Value,HashTable是同步的

HashMap:和HashTable的不同之处是,非同步的,且允许null元素的存在

三、Array和Arrays   Collection和Collections

Array:是所以随机访问一串对象中,最有效率的一种,但是元素类型必须相同,且容量固定无法改变。

Arrays:此静态类专门操作array,提供搜索、排序、复制等静态方法

Collection:Java.util下的一个接口,是各种集合结构的父接口

Collections:Java.util下的一个专用静态类,他包含各种集合操作的静态方法,包括对集合的搜索、排序、线程安全等操作。

四、总结

涉及到堆栈、队列等操作,使用List接口,快速插入和删除应使用LinkList,随机访问元素使用ArrayList

单线程使用非同步类,多线程使用同步类

注意对HashTable的操作,作为Key的对象要覆写equals和hashCode方法

在各种Map中HashMap用于快速查找

最长使用的是ArrayList、HashSet、HashMap、Array

转载:http://blog.csdn.net/jinhuoxingkong/article/details/51225641

最新文章

  1. Ambari服务依赖关系图生成脚本
  2. PHP list,explode的使用
  3. Java分布式Socket监控项目思考
  4. 安装jdk java -version 不是自己所需要的版本
  5. 精通Linux的“kill”命令
  6. 单片机C语言实现的采用DS18B20的温度检测装置
  7. Fizz-Buzz-Whizz
  8. ubuntu 12.04 x86_64:java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons
  9. bzoj1087 [SCOI2005][状压DP] 互不侵犯King (状压)
  10. UVa11054
  11. springboot配置SSL自签名证书
  12. [POJ 1637] Sightseeing tour(网络流)
  13. shelve
  14. 安装gcc4.8.5
  15. google glog 使用方法
  16. [SDOI2016 Round1] 数字配对
  17. week1-绪论
  18. 覆盖Django mysql model中save方法时碰到的一个数据库更新延迟问题
  19. IDEA换行CRLF, LF, CR的解释和默认设置
  20. 最大流算法-ISAP

热门文章

  1. Ajax接收json响应
  2. nodejs-Module
  3. Java 嵌套类和内部类演示样例<三>
  4. Oracle配置网络服务
  5. linux网络启动报错
  6. 刚接触Joomla,写一下瞎折腾的初感受~
  7. System.DirectoryServices Namespace
  8. [转]Linux常用命令学习
  9. ubuntu下Chrome谷歌浏览器部分网站图片显示不正常的解决方法
  10. SQLserver中用convert函数转换日期格式(2)