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

Java集合,看这一篇就够了

时间:2017-08-08 00:34:47      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:使用   util   查询   list接口   不重复   ash   子接口   map   java集合   

Java集合是java.util下特别有用的工具类,大致分为2个系列:Collection接;口 和Map接口派生的。

按体系分,则分为四种

1.  List:有序重复的集合;

2. Set: 无序不重复的集合

3. Map: 有映射关系的集合(key-value )

4. Queue: 代表队列集合的实现(JDK5之后添加的)

 

这里捡几个不得不说的子类来说说:

1.HashSet

 如果提到Set,不得不提他的接口实现类HashSet。

特点: 1、无序,2、不能同步,即线程非安全的,3、值可以为null

提问hashCode()方法对于HashSet的重要性

答:1、首先理解下hash,哈希,它能保证通过一个对象快速查找到另一个对象。hash算法的价值在于速度。

      eg:当查询集合中某个元素时,hash算法可以直接根据元素的值计算出这个元素的存储位置,从而可以让程序快速定位该元素。

      2.相比而言,数组是根据索引定位元素的位置,HashSet没有索引这一说法,所以会根据元素的值和hashCode()方法快速算出hashCode值,来定位存储位置。

      3.为什么有了数组还需要HashSet来存储呢?

      数组是长度是不变的,所对应的元素的索引时连续的,无法自增长度。而HashSet可以增加长度,并且可以根据 hashcode快速定位存储位置,这点是数组无法达到的。

2.ArrayList && Vector 

它们是List接口的实现类,并且长度是可变的,

这里主要讲讲它们的different

ArrayList 是线程不安全的,而Vector是线程安全的。所以ArrayList想多来说性能高于Vector。

Vector是不推荐用的,通常我们使用ArrayList,为了保证ArrayList的线程安全性,我们会采用Collections工具类

List list = Collections.synchronizedList(new ArrayList());

 

3.Queue集合

Queue用于模拟队列这种数据类型。队列通常指“先进先出(FIFO)”的容器,不允许随机访问队列的元素

PriorityQueue 实现类是一种规定了排序的Queue,按大小排序的,不允许null

Deque接口是Queue的子接口,双端队列。他有个实现类ArrayDeque,基于数组实现的双端队列,实现机制类似于ArrayList

LinkList类及实现了List接口又实现了Deque接口

主要是用于栈的一些炒作,常用方法,后面再贴上来。

 

4.HashMap && HashTable

它们是Map接口的实现类,它们的关系类似于ArrayList和Vector的关系。

HashMap性能略高于HashTable,是线程不安全的。另外是允许null 的key 和null 的 value.

HashTable 相反,不允许空的值,是线程安全的,他是一种比较古老的Map实现类,

为了保证线程安全:

Map map = Collections.synchronizedMap(new HashMap());

 

结尾:

我不想把一个随笔讲的太像教科书,不然看它干嘛,直接看JDK API 好了,主要是讲讲自己要注意的常用实现类。

当然以后我技术进阶了,回头分析下源码

 

 

      

 

Java集合,看这一篇就够了

标签:使用   util   查询   list接口   不重复   ash   子接口   map   java集合   

原文地址:http://www.cnblogs.com/Profound/p/7302421.html

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