• 【第十一章 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.
  • 相关阅读:
    在 CentOS 上安装 Docker Engine
    Django 项目创建第一个应用
    VulnHub Earth
    java计算机毕业设计小福星宠物领养演示视频源程序+mysql+系统+lw文档+远程调试
    动态改变列数做分页
    使用 Docker 自建一款怀旧游戏之 - 超级马里奥
    Java的接口以及接口与抽象类区别
    spi个人笔记
    Brew包的基本安装(手把手教学)
    pg14-sql基础(二)-排序与统计
  • 原文地址:https://blog.csdn.net/qq_43742813/article/details/127040609