各位同僚大家晚上好,在此很感谢各位领导和版主能提供一个给我学习交流的平台,很高兴今晚能有机会与大家分享 java的高级特性中的集合和泛型,如有不对不足的地方,恳请各位同僚在评论给予批评指正。
集合和泛型在java中重要之处不言而喻,此处不多说下面我就带大家简单看一下 泛型 ,泛型最主要是保证集合使用过程中的安全!
其集合的结构
一,List接口是有序的、可以添加重复元素、也可以添加null,并且可以添加多个
1. Vector
Vector是同步的、同步意味着安全,但效率低。现在开发中基本不用Vector迭代时是用Enumeration迭代器迭代,
不能以Iterator迭代,因为如果数据量 特别大时,迭代会快速失败。
2. ArrayList
ArrayList是异步的、异步意味着效率高,但不安全。
ArrayList是一种顺序存储结构,从数据结构的角度上说,它在查询时平均复杂度低,效率高;在插入或删除时,平均复杂度高,效率低。
ArrayList迭代时是用Iterator迭代器迭代,不能以Enumeration迭代,因为如果数据量特别大时,迭代会快速失败
3. LinkedList
LinkedList是一种双链式结构,从数据结构的角度上说,它删除时平均复杂度低,效率高;在查询时,平均复杂度高,效率低。
LinkedList迭代时是用Iterator迭代器迭代,不能以Enumeration迭代,因为如果数据量特别大时,迭代会快速失败
二,Set接口
Set接口是无序的、不可以可以添加重复元素、可以添加null,但只能添加一个
1.HashSet实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素
2.SortedSet是Set的子接口,在JDK5之前,TreeSet都是直接实现的SortedSet接口,JDK6新增加了其子接口NavigableSet
三,Map将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值
1.Hashtable是java se中常用类中唯一一个没有按照命名规范定义的一个类名,其中Hashtable中的"t"是小写,而不是大写。
Hashtable是同步的,同步意味着效率低,但是安全
2.HashMap是基于哈希表的 Map 接口的实现。是以键值对的方式存在,可以参考高中代数中的映射来理解。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashMap是异步的,异步意味着效率高,但是不安全
3.SortedMap进一步提供关于键的总体排序 的 Map。和SortedSet类似,该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有序映射时提供的 Comparator 进行排序。对有序映射的 collection 视图(由 entrySet、keySet 和 values 方法返回)进行迭代时,此顺序就会反映出来。要采用此排序方式,还需要提供一些其他操作(此接口是 SortedSet 的对应映射)
四,常用迭代器
Enumeration迭代器一般专用于对Vector的迭代,不能以Iterator迭代,因为如果数据量特别大时,迭代会快速失败
Iterator迭代器一般用于ArrayList、LinkedList以及Set接口的迭代,不能以Enumeration迭代,因为如果数据量特别大时,迭代会快速失败
ListIterator迭代器是Iterator迭代器的子接口,它只用于对ArrayList及LinkedList的迭代,除了其具备Iterator的功能外,其还具备反序迭代的功能
五,Coolections
Collections是集合的一个工具类,此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含了操作Collection的最长用的一些方法。例如:排序、复制集合、集合中添加集合、随机排序、 让异步的ArrayList等变成同步的ArrayList的方法等
好了文章读完了,列举几个简单问题共大家探讨.....
1.HashMap和Hashtable的区别?
2.List 和 Map 区别?
3.List、Map、Set三个接口,存取元素时,各有什么特点?
4.你所知道的集合类都有哪些?主要方法?
5.Collection 和 Collections的区别?
|