关于java:JAVA基础集合类库下泛型SetMap

8次阅读

共计 1179 个字符,预计需要花费 3 分钟才能阅读完成。

泛型机制

基本概念

  • 通常状况下汇合中能够寄存不同类型的对象, 是因为将所有对象都看做 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 办法后保障这两个元素失去的哈希玛值雷同, 那么由一个哈希算法生成的索引地位雷同. 此时只须要与该索引地位已有元素比拟即可, 从而提高效率并防止反复元素的呈现

正文完
 0