一.集合框架
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,具体调用时,要将通用类型转换成指定的类型。泛型提高了大型程序的类型安全和可维护性。
目的:努力将运行时异常转换成编译时的问题,减少运行时异常数量(提高了编译器的能力)。
- 解决模版编程的问题。