读书人

java会合框架

发布时间: 2012-08-25 10:06:20 作者: rapoo

java集合框架

?? 1.总的架构如下:

? ?Collection接口:?

? ? ? ? ? ? ?Set接口:

            HashSet具体类

            LinkedHashSet具体类

            TreeSet具体类

       List接口: 

            ArrayList具体类

            LinkedList具体类

            向量类Vector具体类

            Stack具体类

Map接口:

       HashMap类

       LinkedHashMap类

       TreeMap类?

Collection持有单个元素,而Map持有相关联的键值对

?

2. Collection类型的两大类Set和List

? ?A. ?Set和List接口都扩展自Collection,Set就是高中数学里所说的集合,不允许重复,无序。 ? ? ?List就像一个表,可以重复,元素在表里有顺序的放着。

? ?B. ?HashSet的对象必须实现hashCode方法,javaAPI大多数类实现了hashCode方法。

   LinkedHashSet实现了对HashSet的扩展,支持规则集内元素的排序,在HashSet中元素是没 ? ? ?有顺序的,而在LinkedHashSet中,可以按元素插入集合的顺序进行提取

  TreeSet保证集中的元素是有序的,有2种方法可以实现对象之间的可比较性:

? ? ?1,添加到TreeSet的对象实现了Comparable接口;

? ? ?2,给规则集的元素指定一个比较器(Comparator)

? ?C. ?效率上,如果按照插入的顺序提取元素的时候,应该采用LinkedHashSet,但是如果没有要求的 ? ? ? ? 话,HashSet的效率要比LinkedHashSet的高,还是因为LinkedHashSet是按照插入集合的顺 ? ? 序存储的;LinkedHashSet只是按照添加的的先后顺序在存储时保持顺序,要给集合元素添 ? ? ? 加顺序属性,需要使用TreeSet(集合元素有排序关系)。

? ?3. List

? ? ? A. ?List集合的特征:集合有序排列,可以有重复元素,可以随机访问(使用位置index添加、删除、访问元素)

List的实现类有ArrayList,LinkedList,这两个都是非线程安全的,Vector是线程安全的List实现类,Stack是vector的子类。

B. 插入数据上面的区别,在ArrayList的前面或中间插入数据时,必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;

而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

C. Vector跟ArrayList的区别,前者的方法添加了同步处理,因而是线程安全的,但是后者 ? ? ? ?的效率高,所以没必要进行同步处理的时候都是用ArrayList;当需要增长时,Vector默认 ? ? ? ? ? ? ? ? 增长为原来一培,而ArrayList却是原来的一半 ?

4. Map?

A. Map是映射,跟前面的Set和List有本质的区别。

? ? ? ?散列图HashMap,链式散列图LinkedHashMap,树形图TreeHashMap是映射的3种实现,从 ? ? ? ?名字上来说,有了上述Set的3种实现的分析,这个也是类似的。

? ? ? HashMap:效率高

? ? ? ?LikedHashMap:按照添加顺序存储,可以按添加顺序取出

? ? ? ? TreeHashMap:排序性。

? ? ?B. ?HashMap和Hashtable的区别 ?

? ? ? ? ? ? 同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不 ? ? ? ? ? ? ? ?是同步的 ;

? ? ? ? ? ? 值:HashMap允许null值(key和value都可以),而 Hashtable不允许。

? ?5 . Collection 和 Collections的区别。 ?

? ? ? ? Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 ?

? ? ? ? Collection是个java.util下的接口,它是各种集合结构的父接口。


读书人网 >编程

热点推荐