• [javaSE] 集合框架(HashSet)


    Set:元素是无序,不可重复的

    HaseSet:底层数据结构是哈希表

    定义一个类Demo

    获取Demo对象,system.out.println(demo),打印demo对象,Demo@xxxxxx

    Demo对象在内存中是按照哈希值存储在哈希表中,取出也是按照哈希值,所以是无序的

    import java.util.HashSet;
    
    class Demo{
    }
    public class HashSetDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Demo demo1=new Demo();
            Demo demo2=new Demo();
            System.out.println(demo1);
            System.out.println(demo2);
            HashSet set=new HashSet();
            set.add(demo1);
            set.add(demo2);
            System.out.println(set);
        }
    
    }

    结果:

    Demo@1a8fa0f0

    Demo@4b8efa2f

    [Demo@4b8efa2f, Demo@1a8fa0f0]

    定义一个类Demo

    重写hashCode()方法,返回一个固定的数字,例如:90,打印对象显示,Demo@3c

    获取多个对象,哈希值都是一样的,此时存入HaseSet中,使用equals()方法,判断是否是同一个对象,如果不是同一个对象,会顺延存储

    import java.util.HashSet;
    
    class Demo{
        @Override
        public int hashCode() {
            return 90;
        }
        @Override
        public boolean equals(Object obj) {
            System.out.println("调用到此处说明,判断是否同一对象");
            return super.equals(obj);
        }
    }
    public class HashSetDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Demo demo1=new Demo();
            Demo demo2=new Demo();
            System.out.println(demo1);
            System.out.println(demo2);
            HashSet set=new HashSet();
            set.add(demo1);
            set.add(demo2);
            System.out.println(set);
        }
    
    }

    结果:

    Demo@5a

    Demo@5a

    调用到此处说明,判断是否同一对象

    [Demo@5a, Demo@5a]

  • 相关阅读:
    面向对象六
    面向对象五
    面向对象四
    面向对象三
    面向对象二
    CentOS7下安装Redis4.0
    在亚马逊的EC2环境中创建swap
    centos7安装rabbitmq操作步骤
    在VUE下使用阿里图标
    Centos7-安装telnet服务
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5484104.html
Copyright © 2020-2023  润新知