码迷,mamicode.com
首页 > 编程语言 > 详细

Java Collection Map 容器 集合

时间:2016-08-13 15:35:16      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

(照着jdk api 用visio 自己画了下面两张图,图片有些凌乱或可能有错误)

技术分享

技术分享

 

接口

  核心的集合接口封装了不同类型的集合。如下图所示:

  技术分享

 核心集合接口

  所有的核心接口都是泛型的,比如Collection接口:

  public interface Collection<E>

  <E>说明声明实例的时候需要指明对象类型,这样编译器就可以在编译期进行一个类型检查,减少运行时错误。

 

Set

特点:集合中的元素不能重复。

 

一个不包含重复元素的集合。这个接口对数学中的集合的抽象概念进行了建模。

  HashSet是最快的获取元素方式,存储的顺序看起来并无实际意义;

  TreeSet按照比较的结果升序保存对象;元素有序

  LinkedHashSet按照被添加的顺序保存对象。

 

 

List

特点:按对象进入的顺序保存对象,可以保存重复的对象。

List定义一个有顺序的集合,有时也被称作一个序列(sequence)。List可以包含重复的元素。

    ArrayList,它长于随机访问元素,但是在List的中间插入和删除元素时较慢。

  LinkedList,它在随机访问方面相对比较慢,但是它进行插入和删除代价较低。

》 ArrayList、Vector和LinkedList的区别

1)三者都是可伸缩数组,即可动态改变长度的数组

2)ArrayList和Vector基于存储元素的Object[]array来实现,LinkedList采用双向列表来实现

3)ArrayList、LinkedList 不是线程安全,Vector 的大部分方法直接或间接同步,所以线程安全。

Queue

通常,Queue中的元素都是按照FIFO (first-in-first-out)的方式,但是这不是必须的。一些优先级队列元素,按照它们的值排列。但是不管使用了什么排序方式,调用remove或poll方法时,移除的都是队列头元素。在FIFO队列中,新元素总是被插在队尾,但是其他类型的队列可能会使用不同的排列方式。

 

Map

特点:保存键值对,键是唯一的不能重复,值可以重复。

 

Map中存储的是键值对的映射。一个Map不能包含重复的key,一个key可以对应至多一个值。 SortedSet和SortedMap 还有两个核心的接口是排序版本的Set和Map:SortedSet和SortedMap。SortedSet的元素是按照升序排列的,SortedMap是按照键的升序排列键值对的。

  HashMap提供了最快的查找技术,也没有按照任何明显的顺序来保存其元素。基于散列表实现的,可以采用对象的hashcode进行快速排序

  TreeMap按照比较结果的升序保存键。基于红黑树的数据结构,内部元素按需排列。

  LinkedHashMap则按照插入顺序保存键,同时还保留了HashMap的查询速度。采用列表来维护内部的顺序。

 表格对比:

技术分享

 

ps:内容较多,慢慢整理

 

参考引用:

[1] Java 容器集合框架概览 http://www.cnblogs.com/mengdd/archive/2013/01/19/2868095.html

Java Collection Map 容器 集合

标签:

原文地址:http://www.cnblogs.com/xiaotangai/p/5109586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!