• Set集合和实现类


    1 HashSet是主要的实现类,Set中常用的方法都是Collection下定义的。

    2 无序性:无序性!=随机性。指元素在底层存储的位置是无序的

       不可重复性:加入相同元素时,后面的元素不能加入进去

    3 注意:要求加进Set中的元素,一定要重写equals和hashCode方法

       才能保证Set中元素的不可重复性。

    4 Set中元素如何存储的?使用哈希算法,如同安排学生坐在教室的不同位置,元素存放在内存的不同位置。

    5 当向Set中添加对象时,首先调用此对象所在类的hashCode(),计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置没有对象存储,则这个对象直接存储在此位置,若此位置已有对象存储,再通过equals()比较两个对象是否相同,如果相同,后面的元素不能添加进来。

    要求:hashcode()方法值与equals方法一致。

    package lianxi2;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import org.junit.Test;
    
    public class TestSet {
    @Test
        public void test1(){
          Set set = new HashSet();
          set.add(23);
          set.add(55);
          set.add(new String("AA"));         //重写了equals和hashcode方法
          set.add(new String("AA"));
          Student stu1 = new Student("001","xi");   //没重写时,用object的equals方法比较的是地址值
          Student stu2 = new Student("001","xi");  //重写后,后面元素不能添加了
          System.out.println(stu1.hashCode());
          System.out.println(stu2.hashCode());
          set.add(stu1);
          set.add(stu2);
          System.out.println(set.size());
          System.out.print(set);
        }
    }

    结果:

    1482401
    1482401
    4
    [AA, 55, 23, Student [id=001, name=xi]]

  • 相关阅读:
    vue系列---响应式原理实现及Observer源码解析(七)
    学习Lowdb小型本地JSON数据库
    渐进式web应用开发---Service Worker 与页面通信(七)
    webpack4核心模块tapable源码解析
    electron 创建托盘应用
    运维堡垒机开发
    使用Supervisord软件管理go服务进程
    安装Harbor之http版本
    Ubuntu 18 LTS netplan 网络配置
    用GO开发企业级分布式云存储系统
  • 原文地址:https://www.cnblogs.com/yjtm53/p/4147969.html
Copyright © 2020-2023  润新知