欢迎来到天天文库
浏览记录
ID:20366273
大小:139.55 KB
页数:23页
时间:2018-10-11
《java集合总结2014集锦》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、java集合总绍2014集锦总结一:java集合总结java集合类主要负责保存、盛装其他数据,因此集合类也称容器类。java集合类分为:set、list、map、queue四大体系。其中set代表无序、不可重复的集合;list代表有序、可重复的集合。map代表具有映射关系的集合;queue代表队列集合。java集合类主要由两个接口派生:Collection和Map,是集合框架的根接U。下面是其接U、子接U和实现类的继承树。下面就一一介绍四大接口及其实现类。Set接口。set集合不允许包含相同的元
2、素。set判断两个对象是否相同是根据equals方法。如果两个对象用equals方法返回的是true,set不会接受这两个对象。HashSet是set接门的典型实现,HashSet按hash算法来存储集合中的元素。因此具有很好的存储和查找性能。HashSet判断两个元素的标准是两个元素的equals方法比较相等,同时两个对象的hasCode()方法返回值也相等。HashSet可以保存null元素。List集合代表一个有序集合。集合中的每个元素都有其对应的顺序索引。Arraylist和vector
3、是list接口的两个典型实现。他们之间的显著区别就是:vector是线性安全的,而arraylist不是。它们两个都是基于数组实现的list类。List还有一个基于链表实现的LinkedList类。当插入、删除元素的速度非常快。这个类比较特殊,功能也特别多,即实现了List接口,也实现了Dueue接口(双向队列)。可以当成双向队列使用,也可以当成栈使用。Queue用于模拟队列的数据结构。LinkedList和ArrayDueue是其两个比较常用的实现类。Map用于保存具有映射关系的数据。Map接
4、口有如下几个常用的实现类:HashMap、HashTable、TreeMap。TreeMap是基于红黑树对TreeMap中所有key进行排序。HashMap和HashTable主要区别有两点:1、Hashtable是线性安全的,因此性能差些。2、HashMap可以使用null作为key或者value。集合类还提供了一个工具类Collections。主要用于查找、替换、同步控制、设置不可变集合。上面是对java集合类的一般概述,卜面就set、list、map三者之间的关系进行剖析。Set与Map的
5、关系。Map集合中所有key集中起来,就组成了一个set集合。所以Map集合提供Set6、p对象来存储元素。它们的本质是一样的。类似于HashSet和HashMap的关系,其实TreeMap和TreeSet本质也差不多,TreeSet底层也是依赖TreeMap实现。Map与List的关系。把Map的key-value分开来看,从另一个角度看,就可以把Map与List统一起来。Map集合是一个关联数组,key可以组成Set集合,Map中的value可以重复,所以这些value可以组成一个List集合。但是需要注意的是,实质Map的values方法并未返回一个List集合。而是返回一个不7、存储元素的Collection集合,换一种角度来看对List集合,它也包含了两组值,其中一组就是虚拟的int类型的索引,另一组就是list集合元素,从这个意思上看,List就相当于所有key都是int型的Map。下面讲解几个相似类之间的差异。ArrayList和LinkedList。ArrayList是一种顺序存储的线性表,K底层是采用数组实现的,而LinkedList是链式存储的线性表。其本质就是一个双向链表。对于随机存储比较频繁的元素操作松选用ArrayList,对于经常需要增加、删除元素应8、该选用LinkedList。但总的来说ArrayList的总体性能还是优于LinkedList。HashSet与HashMap的性能选项。主要有两个方面:容量和负载因子(尺寸/容量)。较低负载因子会增加查询数据的性能,但是会降低hash表所占的内存幵销。较高负载因子则反之,一般对数据的查询比较频繁,所以一般情况下初始容量应该大一点,但也不能太大,否则浪费内存空间。总结二:java集合总结Set:不区分元素的顺序,不允许出现重复的值list:区分元素的顺序,且允许出现秉复的值map:采用keyva
6、p对象来存储元素。它们的本质是一样的。类似于HashSet和HashMap的关系,其实TreeMap和TreeSet本质也差不多,TreeSet底层也是依赖TreeMap实现。Map与List的关系。把Map的key-value分开来看,从另一个角度看,就可以把Map与List统一起来。Map集合是一个关联数组,key可以组成Set集合,Map中的value可以重复,所以这些value可以组成一个List集合。但是需要注意的是,实质Map的values方法并未返回一个List集合。而是返回一个不
7、存储元素的Collection集合,换一种角度来看对List集合,它也包含了两组值,其中一组就是虚拟的int类型的索引,另一组就是list集合元素,从这个意思上看,List就相当于所有key都是int型的Map。下面讲解几个相似类之间的差异。ArrayList和LinkedList。ArrayList是一种顺序存储的线性表,K底层是采用数组实现的,而LinkedList是链式存储的线性表。其本质就是一个双向链表。对于随机存储比较频繁的元素操作松选用ArrayList,对于经常需要增加、删除元素应
8、该选用LinkedList。但总的来说ArrayList的总体性能还是优于LinkedList。HashSet与HashMap的性能选项。主要有两个方面:容量和负载因子(尺寸/容量)。较低负载因子会增加查询数据的性能,但是会降低hash表所占的内存幵销。较高负载因子则反之,一般对数据的查询比较频繁,所以一般情况下初始容量应该大一点,但也不能太大,否则浪费内存空间。总结二:java集合总结Set:不区分元素的顺序,不允许出现重复的值list:区分元素的顺序,且允许出现秉复的值map:采用keyva
此文档下载收益归作者所有