黑马程序员技术交流社区

标题: 集合 [打印本页]

作者: 熙熙攘攘    时间: 2016-3-18 00:22
标题: 集合
     java集合类是一种特别有用的工具类,可用于存储数量不等的对象,并可以实现常用的数据结构,如栈,队列等。除此之外,java集合还可用于保存具有映射关系的关联数组。java集合大致可分为Set,List,Queue和Map四种体系,其中Set代表无序,不可重复的集合;List代表有序,重复的集合;而Map则代表具有映射关系的集合。java5又增加了Queue体系集合,代表一种队列集合实现。
java集合就像一种容器,可以把多个对象,丢进该容器中,在java5之前,java集合会丢失容器中所有对象的数据类型,把所有对象都当成Object类型处理。从java5增加了泛型以后,java集合可以记住容器中对象的数据类型,从而可以编写出更简洁,健壮的代码。
     集合类和数组不一样,数组元素即可以是基本类型的值,也可以是对象,而集合里只能保存对象。
     java的集合类主要由两个接口派生而出:Collection和Map ,Collection和Map是java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
Collection
     Collection接口是List,Set, Queue接口的父接口,该接口里定义的方法即可用于操作Set集合,也可用于操作List和Queue集合。
Set
     Set集合类似于一个罐子,Set集合通常不能记住元素的添加顺序。Set集合与Collection基本相同,灭有提供额外的方法。实际上Set就是Collection,只是行为略有不同,Set不允许包含重复元素。
这些只是同样适用于HashSet  TreeSet 和 EnumSet三个实现类,只是三个实现类还各有特色。
HashSet类
     HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用这个实现类。HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找功能。

linkedHashSet类
     HashSet还有一个子类LinkedHashSet,LinkedHashSet集合也是根据元素的hashCode值来决定元素的存储位置,但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的。也就是说,当遍历LinkedHashSet集合里的元素时,LinkedHashSet将会按元素的添加顺序来访问集合里的元素。
     LinkedSet需要维护元素的插入顺序,因此性能略低于HashSet的性能,但在迭代访问Set里的全部元素时将有很好的性能,因为它以链表来维护内部顺序。
     虽然LinkedHashSet使用了链表记录集合元素的添加顺序,但LinkedHashSet依然是HashSet,因此它依然不允许集合元素重复。
TreeSet类
     TreeSet是SortedSet接口的实现类,正如SortedSet名字所暗示的,TreeSet可以确保集合元素处于排序状态。与HashSet集合相比,TreeSet还提供了如下几个额外的方法。
Comparator comparator():如果TreeSet采用了定制顺序,则该方法返回定制排序所使用的Comparator;如果TreeSet采用了自然排序,则返回null
Object first():返回集合中的第一个元素。
Object last():返回集合中的最后一个元素
Object lower(Object e):返回集合中位于指定元素之前的元素(即小于指定元素的最大元素,参开元素不需要是TreeSet集合里的元素)
Object higher(Object e):返回集合中位于指定元素之后的元素(即大于指定元素的最小元素)
     treeSet并不是根据元素的插入顺序进行排序的,而是根据元素实际值的大小来进行排序的。
     与HashSet集合采用hash算法来决定元素的存储位置不同,TreeSet采用红黑树的数据结构来存储集合元素。那么TreeSet进行排序的规则是怎样的呢?TreeSet支持两种排序方法:自然排序和定制排序,在默认情况下,TreeSet采用自然排序。
如果希望TreeSet能正常运作,TerrSet只能添加同一种类型的对象。
     当把一个对象加入TreeSet集合中时,TreeSet调用该对象的compareTO(Object obj)方法与容器中的其他对象比较大小,然后根据红黑树结构找到它的存储位置。如果两个对象通过compareTo(Object obj)方法比较相等,新对象将无法添加到TreeSet集合中。
对于TreeSet集合而言,它判断两个对象是否相等的唯一标准是:两个对象通过compareTo(Object obj)方法比较是否返回0 如果通过比较返回0,则认为它们相等;否则就认为它们不相等。
List集合
List集合代表一个元素游戏,可重复的集合,集合中的每个元素都有其对应的顺序索引。List集合运行使用重复元素,可以通过索引来访问指定位置的集合元素。
Queue集合
Queue用于模拟队列这种数据结构,队列通常是指“先进先出”的容器,队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。新元素插入到队列的尾部,访问元素操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素.


作者: 熙熙攘攘    时间: 2016-3-18 11:41
没人来看我写的吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2