package cn.itcast.Collection;/* *
单例集合体系: *
Collection 单例集合的根接口 *
-------| List 列表集合 实现了该接口的类特点:有序可重复 *
------------| ArrayList 使用Object数组实现的,特点:增删慢,查询块
* ------------| LinkedList 使用一个链表实现的,特点: 增删块,查询慢
* ------------| Vector 实现与ArrayList一致,实现是线程安全的,但是效率低,JDK1.0出现的;
* -------| Set 集合 实现了该接口的类特点: 无序不可重复
* -----------| HashSet 底层是一张hash表,特点是:存取速度快 *
HashSet原理: * 当往HashSet中添加的元素对象的时候,会调用元素的HashCode方法得到元素的HashCode值,然后经过一些列的运算 * 得到元素在hash表中的存储位置。分两种情况: * 如果算出的位置没有任何元素存放,就直接存放元素: * 如果算出的位置已经存放了其他的元素,还会调用元素的equals()方法再计算一次,如果返回false,那么允许存放, * 如果返回的是true那么就允许存放。 *
* -----------| TreeSet 内部维护的是一个二叉树的数据结构。特点是会自动对元素进行排序存储。 * 特点: *
1. 添加的元素具备自然顺序,那么按自然顺序进行排序;
* 2. 添加的元素不具备自然顺序,那么可以让元素实现comparable接口,在comparaTo中定义培训规则; *
3. 添加的元素不具备自自然顺序,同时没有实现comparable接口,可以传入一个比较器来指定排序规则。 * 比较器定义格式: * class cmp implements Comparator{ * * } * 4. 如果比较的方法返回的是0,那么该元素被视为重复元素,不允许添加。 *
* 泛型: * jdk1.5出现的新特性 *
作用: *
1. 将运行时错误提前到编译时错误: *
2. 避免了类型转换: *
* 自定义泛型: * 一个数据类型的占位符还是变量; *
* 泛型方法: * 修饰符 <自定义泛型>返回值(自定义泛型 变量名){}
* 说明:
* 1.泛型方法的具体类型是由传入的实参类型决定的; *
2. 自定义泛型名称符合命名规则就可以,一般使用大写字符T / E 表示; *
* 泛型类:
* 定义在类上的泛型 * 定义格式:
* class 类名<自定义泛型>{} * 说明:
* 1.泛型类中自定义的泛型类型是由创建对象的时候决定的。
* 2. 使用泛型类创建对象的时候,如果没有指定数据类型,那么默认为Object类型; * 3.静态的函数不能使用类中的自定义泛型,如果需要自定义泛型;
* * 泛型接口:
* 定义在接口上的泛型
* 定义接口 * class 接口名<自定义泛型>{}
* 说明:
* 1. 泛型接口上的自定义泛型的具体类型是有实现该接口的类的类型决定的;
* 2. 实现接口的类没有指定具体类型,那么默认的类型是Object;
* 3. 在创建接口实现类的对象时候才决定泛型类型,格式如下:
* class claaNameimpelements interfaceName{}
*
* 泛型的上下限:
* 上限: Type c 允许时Number类型或是子类型
* 下限: TYpe c 允许是Integer类型或是父类型。
*/
public class Demo0 {
}