• java——集合——Set集合——HashSet存储自定义类型元素——必须重写hashCode方法和equals方法,保证同名同年龄的人,视为同一个人,只能存储一次


    HashSet存储自定义类型元素

    HashSet存储自定义类型元素

    • set集合必须元素唯一:
      存储的元素(String,Integer,...Student,Person...),必须重写hashCode方法和equals方法

    • 要求:
      同名同年龄的人,视为同一个人,只能存储一次


    自定义元素

    package com.itheima.demo02.Set;
    
    import java.util.Objects;
    
    public class Person {
        private String name;
        private int age;
    
        public Person() {
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Person person = (Person) o;
            return age == person.age &&
                    Objects.equals(name, person.name);
        }
    
        @Override
        public int hashCode() {
    
            return Objects.hash(name, age);
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    
    

    测试类

    public class Demo03HashSetSavePerson {
        public static void main(String[] args) {
            //创建HashSet集合存储Person
            HashSet<Person> set = new HashSet<>();
            Person p1 = new Person("小美女",18);
            Person p2 = new Person("小美女",18);
            Person p3 = new Person("小美女",19);
            System.out.println(p1.hashCode());//1967205423
            System.out.println(p2.hashCode());//42121758
    
            System.out.println(p1==p2);//false
            System.out.println(p1.equals(p2));//false
            set.add(p1);
            set.add(p2);
            set.add(p3);
            System.out.println(set);
        }
    
    }
  • 相关阅读:
    Echarts图表常用功能配置,Demo示例
    Markdown 语法笔记
    EasyUI 通过 Combobox 实现 AutoComplete 效果
    python PIL Image基本的图片拼接、圆形裁减、添加文字
    Fiddler高级用法—Fiddler Script抓取app网页json数据并保存
    python elasticsearch环境搭建
    利用brich实现文本层次聚类,将文本内容分类
    python发送邮件带附件
    python-docx生成word文档
    python-pygal画图
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16906535.html
Copyright © 2020-2023  润新知