java 集合类总结_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java 集合类总结

java 集合类总结

 2014/8/9 2:13:16  chenyanchaoyc  程序员俱乐部  我要评论(0)
  • 摘要:集合类被分为两种,一种是Collection,另一种是Map。1.Collection一个独立元素的序列,这些元素都服从一条或者多条规则。他下面有三个接口继承这个这个接口。分别是list、set、queue。List:必须按照插入的顺序保存元素Set:不能有重复的元素Queue:按照排队规则来确定对象产生的顺序(通常与他们被插入的顺序一样)。List常被实现类:ArrayList、LinkedList、Vector。下面说下这三个的区别。ArrayList是基于数组实现的集合类
  • 标签:总结 Java 集合类

?

class="MsoNormal">

?

?

集合类被分为两种,一种是Collection,另一种是Map

?

1.Collection

??? 一个独立元素的序列,这些元素都服从一条或者多条规则。他下面有三个接口继承这个这个接口。分别是listsetqueue

?List:必须按照插入的顺序保存元素

?Set:不能有重复的元素

?Queue:按照排队规则来确定对象产生的顺序(通常与他们被插入的顺序一样)

?

List常被实现类:ArrayListLinkedListVector。下面说下这三个的区别。

ArrayList是基于数组实现的集合类,所以对于数组的caozuo.html" target="_blank">删除操作来说效率底下,要通过移动数组位置,重新定位来换取一个值的删除。但是对于查询来说速度就非常的快了,只需要知道要查找那个坐标位就能找到我要查到的值。

LinkenList是基于链表实现的集合类,所以对于他来说查询一个值,要通过一步步的遍历,达到我要查询的位置,才能获取到想要的值,而如果用来做删除、添加操作时,就方便多了,因为他只要获取到前一个元素和后一个元素就行。

vector同步的,所以线程安全

List的实现类是AbstractList。上面三个都是继承与该类。

?

Set常被实现类:HashSetTreeSet

set为什么能实现去重添加?

是因为hashset的存储是通过hashMap实现的,所以在往hashset中添加元素时,会去计算hashcode的值,这里就涉及到equalshashcode的条款了。

1.如果两个对象equals比较相等,则一定会产生一样的hashcode值。

2.如果两个对象的hashcode值相等,equals也不一定相等。

所以在添加相同的对象时,不能重复添加。

HashSetTreeSet的区别?

1.HastSet是通过hashMap实现的,而TreeSet是通过TreeMap实现的,只不过都是用的Mapkey

2. MapkeySet都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
3. hashCode
equal()HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
?? a. hashCode
是用来计算hash值的,hash值是用来确定hash表索引的.
?? b. hash
表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象

每一个对象
??????
才可以真正定位到键值对应的Entry.
?? c. put
,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
4.
由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
?? a. Comparator
可以在创建TreeMap时指定
?? b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
?? c. TreeMap
是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.

?

2.Map

? ?map常被继承类HashMapHashtableTreeMapLinkedHashMap。接下来就说下这四个继承类的区别。

继承类

是否允许空的keyvalue

是否允许keyvaluenull

是否同步

是否排序

HashMap

Hashtable

TreeMap

LinkedHashMap

?

3.集合的操作类

? 需要指出的是集合中含有两个集合的操作类,分别是CollectionsArrays。这两个类中集成了对集合类众多动作的操作,包括排序、反转、截取等方法。需要注明的是这两个是使用类,不是集合类的接口,而是对集合类的操作,所以不要跟Collection集合类接口混淆。

?

?

根据开始给出的集合类状态图我做出了一个简单的图标归纳

?

实现接口类

继承接

口类

实现方式

是否可重复

是否同步

是否排序

ArrayList

List

Collection

数组

LinkedList

链表

Vector

?

HashSet

Set

hashMap

TreeSet

treeMap

Hashtable

Map

Map

Key,value

HashMap

Key,value

TreeMap

Key,value

LinkedHashMap

Key,value

?

?

?

  • 大小: 24.2 KB
  • 查看图片附件
发表评论
用户名: 匿名