书通范文网 -工作总结,演讲稿,思想汇报,信函等各种范文。
书通网logo
当前位置: 书通网 > 范文 > 总结 > java集合总结

java集合总结

时间:2014-11-26 作者:林秀华 分类:总结 来源:书通网
总结一:java集合总结

java集合类主要负责保存、盛装其他数据,因此集合类也称容器类。java集合类分为:set、list、map、queue四大体系。其中set代表无序、不可重复的集合;list代表有序、可重复的集合。map代表具有映射关系的集合;queue代表队列集合。

java集合类主要由两个接口派生:collection和map,是集合框架的根接口。下面是其接口、子接口和实现类的继承树。

下面就一一介绍四大接口及其实现类。

set接口。set集合不允许包含相同的元素。set判断两个对象是否相同是根据equals方法。如果两个对象用equals方法返回的是true,set不会接受这两个对象。

hashset是set接口的典型实现,hashset按hash算法来存储集合中的元素。因此具有很好的存储和查找性能。hashset判断两个元素的标准是两个元素的equals方法比较相等,同时两个对象的hascode()方法返回值也相等。hashset可以保存null元素。

list集合代表一个有序集合。集合中的每个元素都有其对应的顺序索引。arraylist和vector是list接口的两个典型实现。他们之间的显著区别就是:vector是线性安全的,而arraylist不是。它们两个都是基于数组实现的list类。list还有一个基于链表实现的linkedlist类。当插入、删除元素的速度非常快。这个类比较特殊,功能也特别多,即实现了list接口,也实现了dueue接口(双向队列)。可以当成双向队列使用,也可以当成栈使用。

queue用于模拟队列的数据结构。linkedlist和arraydueue是其两个比较常用的实现类。

map用于保存具有映射关系的数据。map接口有如下几个常用的实现类:hashmap、hashtable、treemap。treemap是基于红黑树对treemap中所有key进行排序。hashmap和hashtable主要区别有两点:1、hashtable是线性安全的,因此性能差些。2、hashmap可以使用null作为key或者value。

集合类还提供了一个工具类collections。主要用于查找、替换、同步控制、设置不可变集合。

上面是对java集合类的一般概述,下面就set、list、map三者之间的关系进行剖析。

set与map的关系。map集合中所有key集中起来,就组成了一个set集合。所以map集合提供set<k>keyset()方法返回所有key组成的set集合。由此可见,map集合中的所有key具有set集合的特征,只要map所有的key集中起来,它就是一个set集合,这就实现了map到set的转换。同时,如果把map中的元素看成key-value的set集合,也可以实现从set到map之间的转换。hashset和hashmap分别作为它们的实现类。两者之间也挺相似的。hashset的实现就是封装了hashmap对象来存储元素。它们的本质是一样的。类似于hashset和hashmap的关系,其实treemap和treeset本质也差不多,treeset底层也是依赖treemap实现。

map与list的关系。把map的key-value分开来看,从另一个角度看,就可以把map与list统一起来。

map集合是一个关联数组,key可以组成set集合,map中的value可以重复,所以这些value可以组成一个list集合。但是需要注意的是,实质map的values方法并未返回一个list集合。而是返回一个不存储元素的collection集合,换一种角度来看对list集合,它也包含了两组值,其中一组就是虚拟的int类型的索引,另一组就是list集合元素,从这个意思上看,list就相当于所有key都是int型的map。

下面讲解几个相似类之间的差异。

arraylist和linkedlist。arraylist是一种顺序存储的线性表,其底层是采用数组实现的,而linkedlist是链式存储的线性表。其本质就是一个双向链表。对于随机存储比较频繁的元素操作应选用arraylist,对于经常需要增加、删除元素应该选用linkedlist。但总的来说arraylist的总体性能还是优于linkedlist。

推荐阅读