您的位置:首页 > 编程语言 > Java开发

基础笔记(一)Java 集合

2014-04-13 22:31 190 查看
集合日常用到的有List,Set,Map等等。

List
List常用的有2种,包括ArrayList与LinkedList。这两种List的主要区别在于底层的数据结构的差别。ArrayList是基于数组实现的,在其上添加了动态改变数组容量的功能。基于这种实现,其更适合做随机访问,不太适合处理元素的增删操作;相比之下,LinkedList是基于链表结构实现的,这种结构决定了其适合处理元素的增删操作,而不适合做随机访问。而且,LinkedList中有“addFirst”与“addLast”这种方法,因此其也可以当做队列、堆栈等数据结构使用。

List中存放的元素不区分是否相同,而且只能存放对象类型,不能存放基础类型的数据。

List还有2种比较常用的,Vector,Stack。

Vector比较类似ArrayList,相比而言,类似于一个同步的ArrayList。

Stack就是一个堆栈的类型了。

Set
Set比较常用的是HashSet,其不保证数据的顺序,其存放的数据不会重复,内部基于HashMap实现,可以理解为key与value都是一样的HashMap。

Map
Map比较常用的有3种,HashMap,HashTable,ConcurrentMap等。

HashMap不是线程安全的,适合用于单线程或者多线程中单线程的操作中。存取速度是三者中最快的。

HashTable是线程安全的,相比HashMap而言,其方法签名上基本上都加上了synchronized关键字,是一种对象锁,每次操作都是锁定整个hash表。

ConcurrentMap相比HashTable而言,比较大的区别在于锁的粒度。ConcurrentMap内部将hash表分解成多块,多线程操作的时候只会锁一个小块的数据,并发操作性能相比HashTable要高出很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐