一、JavaSE复习
(一)Map
1.HashTable
(1). key 和 value 都不能为空,抛出空指针异常
(2). 线程安全的
(3). 底层为 HashtabelEntry[] 数组,初始大小为 11, loadFactor 为 0.75 ,扩容为两倍 + 1
2. Properties
(1). 继承了 HashTable
(2). 用于从 xxx.properties 文件中,加载数据到 Properties 类对象,并进行读取和修改
3 .TreeSet(排序)
(1). 使用无参构造器创建的话,仍是无序的 ,此时以添加的对象实现的 Compareable 接口的 compareTo 去重
(2). 使用 TreeSet 提供的一个构造器,传入一个比较器(匿名内部类)
(3). 底层是 TreeMap
(4). 传入的匿名内部类比较结果为 0 时,无法加入treeSet
(5). 不能 add null
4.TreeMap(规则同 3 )
(1). key 不能为 null
(二)Collections工具类
- reverse(List) 反转
- shuffle(List) 打乱
- sort(List) 自然排序
- sort(List, Comparator) 自定义排序
- swap(List, int, int) 元素交换
- max(Collection) 自然排序最大值
- max(Collection, Comparator) 自定义返回最大值
- min(Collection) 自然排序最小值
- min(Collection, Comparator) 自定义返回最小值
- frequency(Collection, Object) Object出现次数
- copy(List dest, List src) 将 src 的内容复制到 dest 中
- replaceAll(List list, Oject oldVal, Object newVal) 新值替换旧值
(三)泛型(generic)
1. 介绍
(1). 又称参数化类型,解决数据类型的安全问题
(2). 表示数据类型的数据类型 E=> Integer…
(3). 在定义对象的时候制定,即在编译期间就确定
(4). 可以在类声明时通过一个标识表示类中的某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型
2. 泛型的声明
(1). interface 接口{} 和 class 类<K,V>{}
(2). T,K,V 不表示值,而是代表类型,任意字母都可以,常用 T
3. 细节
(1). 泛型指向的数据类型要求是引用类型,不能为基本数据类型
(2). 给泛型指定了引用类型后,子类也可以传入
(3). List list = new ArrayList<(String)>() 后面尖括号里面可填可不填,推荐不填
(4). 不指定泛型,默认为Object
4. 自定义泛型类
(1). 基本语法 class 类名<T,R,…>{}
(2). 普通成员可以使用泛型(属性、方法)
(3). 使用泛型的数组,不能初始化(无法确定开辟多少空间)
(4). 静态方法中不能使用类的泛型
(5). 泛型类的类型,是在创建对象时确定的
(6). 创建对象时没有指定泛型类型,默认为 Object
5. 自定义泛型接口
(1). 基本语法 interface 接口名<T,R,…>{}
(2). 泛型接口的类型,在继承接口或实验接口时确定
(3). 默认 Object
6. 自定义泛型方法
(1). 修饰符 <T,R,…> 返回类型 方法名(){}
(2). 泛型方法,可以定义在普通类中,也可以定义在泛型类中
(3). 当泛型方法被调用时,类型会确定
7. 泛型的继承和通配符
(1). 泛型不具备继承性
(2). <?> 支持任意泛型类型
(3). <? extends A> 支持 A类以及 A类的子类,规定了泛型的上限
(4). <? super A> 支持 A类以及 A类的父类,不限于直接父类,规定了泛型的下限