集合框架小结

一.框架

1.最大的接口Collection、Map、Iterator、Enumeration

2.Collection:存放单值

   |- List:允许有重复内容,有序

       |- ArrayList:异步处理,新的操作类,非线程安全

       |- Vector:底层是数组数据结构。线程同步安全。因为效率低被ArrayList替代了。支持Enumeration输出

   |- Set:不允许有重复内容,无序,靠hashCoke()和equals()进行重复的严重

       |- HashSet:无序存放,底层数据结构是哈希表。是线程不安全。不同步。

|- LinkedHashSet类根据元素的哈希码进行存放,同时用链表记录元素加入的顺序。通过链表来存储对象,一般插入和删除效率较高,检索效率相对较低。

       |- TreeSet:有序存放,使用红黑树结构对加入的元素进行排序存放,通过TreeSet构造方法来获取TreeSet对象。

3.Map:存放键值对

   |- HashMap:新的类,异步处理,非线程安全,允许有null

   |- Hashtable:旧的类,同步处理,线程安全,不允许有null

        |- Properties:属性操作类

   |- TreeMap:有序排列,按key排序,根据Comparable指定排序规则

4.Iterator:

   |- 迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准

5.Enumeration:旧的输出标准

、泛型

应用背景:存入容器的对象在取出时需要强制转换类型,因为对象加入容器时都被转化为Object类型,而取出时又要转成实际类型。

Java中向下类型转换时容易出现ClassCastException的异常,这时应当尽量避免。有什么办法可以让装入容器中的数据保存自己的类型而不被转化为Object对象呢,这就需要用到JDK5.0支持的新功能——Java的泛型。

定义:泛型只是编译时的概念,是供编译器进行语法检查用的。所谓泛型,就是在定义(类型的定义,方法的定义,形式参数的定义,成员变量的定义等等)的时候,指定它为通用类型,也就是数据类型可以是任意的类型,如List<?> list = null,具体调用时,要将通用类型转换成指定的类型。泛型提高了大型程序的类型安全和可维护性。

目的:努力将运行时异常转换成编译时的问题,减少运行时异常数量(提高了编译器的能力)。

  • 解决模版编程的问题。

 

posted @ 2017-04-06 21:34  盛夏光年2017  阅读(162)  评论(0编辑  收藏  举报