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

Java常用集合知识点总结

时间:2018-11-24 17:10:19      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:eset   tree   否支持   list接口   包含   就是   map   map接口   线程安全   

Java集合学习总结

技术分享图片

首先,区分最顶层接口的区别:Collection和Map的区别:前者是单个元素;后者存储的是一对元素。Collection有List和Set两个子接口,两个子接口下分别有Vector和ArrayList以及HashSet和TreeSet等实现类;Map有HashMap、TreeMap、HashTable三种实现类。现分别总结它们的区别。

List、Map、Set存储元素时的特点

首先,List和Set具有相似性,它们都是单列元素集合,所以都有一个公共的父接口(Collection),Set里面不允许有重复元素,重复与否用equals()方法判断;Set取元素时,没法说取第几个,只能以Iterator接口取得所有元素在进行遍历。

List表示有先后顺序的集合,当我们每次调用add()方法时要按先后顺序排序,当然也可以指定当前对象在集合中的存放位置(调用add(int index,Obj e));一个对象可以反复存储进List中。

Map与List和Set不同,它是双列集合,其中有put方法,每次存储时要存储一对key/value,不能存储重复的key,取则根据key获得相应的value。

 

ArrayList和Vector的区别

这两个类都实现了List接口,它们都是有序集合,即存储这两个集合中的元素位置都是有顺序的,相当于动态数组,可以按位置索引取出某个元素并且其中的数据是重复的。

区别主要包括两个方面:

a.同步性:Vector是线性安全的,也就是说它的方法之间是线程同步的,而ArrayList是线程不安全的。所以当只有一个线程会访问到集合时最好使用ArrayList,它不考虑线程安全效率会高些;反之亦然。

b.数据增长:ArrayList与Vector都是有一个初始的容量大小,当存储进它们里面的元素的个数超出容量时就需要加存储空间,Vector默认增长为原来的两倍,而ArrayList没有明确规定。

 

HashSet和TreeSet的区别

HashSet中元素是无序的,元素不可重复,可以有null值;TeeSet元素以一定的顺序排列,但是不能保证是和元素add进去的顺序一样,同时,TreeSet不可重复,不可有null值。

 

HashMap和HashTable以及TreeMap的区别

首先,三者均是实现Map接口的实现类,所以,在存储数据方面均是以一组数据的形式储存,每个数据包含Key和Value值。首先,要明确的是,在Map下面的实现类都是通过key值来映射对应的value值的,所以Key值都是唯一的。三者的主要区别主要表现在能否加null值,是否支持数据同步,值得储存是否有序。

在HashMap中,key和value都可以是null,value值允许重复,不支持数据同步,即允许多线程操作数据

在HashTable中,key和value均不能是null值,同时HashTable支持数据同步,线性安全。

TreeMap插入的元素是有序的,key值不允许为空,value允许为空值

 

Java常用集合知识点总结

标签:eset   tree   否支持   list接口   包含   就是   map   map接口   线程安全   

原文地址:https://www.cnblogs.com/cs2024/p/10012643.html

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