• 【第十一章 Set接口概述,HashSet,LinkedHashSet,TreeSet】


    第十一章 Set接口添加元素过程及其特性,HashSet,LinkedHashSet,TreeSet

    1.Set接口概述
    ①Set接口是Collection的子接口,set接口没有提供额外的方法;
    ②Set 存储无序的,不可重复的数据;
    ③Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals() 方法。
    2.HashSet,LinkedHashSet,TreeSet
    ①HashSet:作为Set的主要实现类,线程不安全的,可以存储null值。
    ②LinkedHashSet:作为HashSet的子类,遍历其内部数据时,可以按照添加的顺序遍历。
    ③TreeSet:可以按照添加对象的指定属性,进行排序。
    3.重写hashCode()和equals()
    要求:
    向Set中添加的数据,其所在的类一定要重写hashCode()和equals()。 重写hashCode()和equals()尽可能保持一致:相等的对象必须具有相等的散列码
    ①重写 hashCode() 方法的基本原则:
    a.在程序运行时,同一个对象多次调用 hashCode() 方法应该返回相同的值。
    b.当两个对象的 equals() 方法比较返回 true 时,这两个对象的 hashCode()方法的返回值也应相等。
    c.对象中用作 equals() 方法比较的 Field,都应该用来计算 hashCode 值。
    ②重写 equals() 方法的基本原则:
    a.相等的对象必须具有相等的散列码。
    b.复写equals方法的时候一般都需要同时复写hashCode方法。通常参与计算hashCode的对象的属性也应该参与到equals()中进行计算。
    4.Set接口:无序性,不可重复性
    以HashSet为例说明:
    ①无序性:不等于随机性,存储时数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。
    ②不可重复性:保证添加的元素按照equals()判断时,不能返回true,即:相同的元素只能添加一个。

     @Test
        public void test(){
       
            Set set=new HashSet();
            set.add(456);
            set.add(123);
            set.add("AA");
            set.
  • 相关阅读:
    f-stack的源码编译安装
    Docker常见操作
    Python入门 lab2
    什么是软件?什么是瀑布模型?
    【踩坑】.NET异步方法不标记async,Task<int> 返回值 return default问题
    数字信号处理 | 实验二 MATLAB z换和z逆变换分析+求解差分方程+求解单位冲击响应+求解幅频相频特性曲线+求解零极点
    【C++面向对象】9. 重载
    VGG16 实现图像分类的 pytorch 实现、步骤精讲
    Spring Boot源码分析一:启动流程
    Linux中安装Redis教程
  • 原文地址:https://blog.csdn.net/qq_43742813/article/details/127040609