Java集合,看这一篇就够了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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集合,看这一篇就够了的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis增删改查(步骤详细,由浅入深,适合初学者,只看这一篇就够了)