泛型机制
基本概念
- 通常状况下汇合中能够寄存不同类型的对象, 是因为将所有对象都看做Objcet类型放入的, 因而从汇合中取出元素时也是Object类型. 为了表白该元素实在的数据类型, 则须要强制类型转换, 而强制类型转换可能会引发 类型转换异样
- 为了防止上述谬误的产生, 从Java5开始减少泛型机制,也就是在汇合名称的右侧应用<数据类型>的形式来<u>明确要求该汇合中能够寄存的元素类型</u>. 若放入其它类型的元素则编译报错
- 泛型只在编译期间无效, 在运行期间不辨别是什么类型
底层原理
- 泛型的实质就是参数化类型, 也就是让数据类型作为参数传递.其中
E
相当于形式参数负责占位, 而应用汇合时<>
中的数据类型相当于理论参数, 用于给形式参数E
进行初始化, 从而使得汇合中所有的E被理论参数替换. 因为理论参数能够传递各种各样宽泛的数据类型,因而得名为泛型
/* 无关泛型 */// i叫做形式参数,负责占位int i;public static void show(int i){ ...}// 10叫做理论参数,负责给形式参数初始化show(10);/* 泛型 */// E叫做形式参数,负责占位// String叫做理论参数E = String;public interface List{ ...}
Set汇合
基本概念
java.util.Set
汇合是Collection汇合的子集合,与List汇合平级- 该汇合中元素没有先后放入秩序,且不容许反复
该汇合的次要实现类是
HashSet
,TreeSet
,LinkedHashSet
HashSet
类的底层是采纳哈希表进行数据管理的TreeSet
类的底层是采纳红黑树进行数据管理的LinkedHashSet
类在外部保护了一个双向链表,链表中记录了元素的迭代程序,也就是元素插入汇合的先后顺序,因而便于迭代
罕用的办法
参才Collection汇合中的办法Collection汇合罕用办法
元素放入HashSet汇合的原理
- 应用元素调用
hashCode
办法获取对应的哈希玛值, 再由某种哈希算法计算出该元素在数组中的索引地位 - 若该地位没有元素,则将该元素间接放入即可
若该地位有元素, 则应用新元素与已有元素比拟哈希玛值.
- 若哈希值不雷同, 则将该元素间接放入
若哈希值雷同,则应用新元素调用
equals
办法与已有元素顺次比拟- 若相等则增加元素失败,否则将元素间接放入即可
TreeSet汇合的概念
Map汇合
基本概念
罕用的办法
元素放入HashMap汇合的原理
相干的常量
Collection类
Map汇合
基本概念
罕用的办法
思考
为什么要求重写equals办法后要重写hashCode办法
[解析参考]
当两个元素调用equals
办法相等时证实两个元素雷同.
重写hashCode
办法后保障这两个元素失去的哈希玛值雷同,那么由一个哈希算法生成的索引地位雷同. 此时只须要与该索引地位已有元素比拟即可,从而提高效率并防止反复元素的呈现