资讯专栏INFORMATION COLUMN

HashSet存储自定义类型元素

Astrian / 2907人阅读

摘要:必须重写和方法存储自定义类型元素集合报错元素唯一存储的元素必须重写方法和方法要求同名同年龄的人视为同一个人只能存储一次创建集合存储小美女小美女小美女

/*
必须重写hashCode和toString方法
*/
package com.itheima.demo02.Set;

import java.util.HashSet;

/*

HashSet存储自定义类型元素

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

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

*/
public class Demo03HashSetSavePerson {

public static void main(String[] args) {
    //创建HashSet集合存储Person
    HashSet 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);
}

}
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;
}

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75116.html

相关文章

  • Java编程基础18——集合(Set集合)

    摘要:并把最终的随机数输出到控制台。方法,在集合中如何存储元素取决于方法的返回值返回,集合中只有一个元素。创建集合对象,传入比较器。 1_HashSet存储字符串并遍历 A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 import java.util.HashSet; public class Demo1_HashSet { p...

    SexySix 评论0 收藏0
  • 1、List接口 2、Set接口 3、判断集合唯一性原理

    摘要:接口的特点接口的特点它是一个元素存取有序的集合。导致迭代器并不知道集合中的变化,容易引发数据的不确定性。枚举已被迭代器替代。集合取出元素的方式可以采用迭代器增强。 01List接口的特点 A:List接口的特点: a:它是一个元素存取有序的集合。 例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。 b:它是一个带有索引的...

    gnehc 评论0 收藏0
  • Collection集合知识点总结

    摘要:和的区别是非线程安全的,效率高是基于线程安全的,效率低底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。基本上都是以为基础。 什么是集合 Java是一门面向对象的语言. 为了方便操作多个对象,那么我们就得把这多个对象存储起来 想要存储多个对象(变量),我们就需要一个容器 集合就是一个放数据的容器(集合类存放的都是对象的引用,而非对象本身) ...

    I_Am 评论0 收藏0
  • Java集合框架——Set接口

    摘要:如果你知道用集合,就用。在集合中常见的数据结构底层数据结构是数组,查询快,增删慢底层数据结构是链表,查询慢,增删快底层数据结构是哈希表。依赖两个方法和底层数据结构是二叉树。 第三阶段 JAVA常见对象的学习 集合框架——Set接口 showImg(https://segmentfault.com/img/remote/1460000019683927?w=700&h=280); Lis...

    Ashin 评论0 收藏0
  • JDK 是如何判断两个对象是否相同的?判断的流程是什么?

    JDK 是如何判断两个对象是否相同的呢?判断的流程是什么? 参考解答:JDK 会先判断两个对象的hashCode是否相同,如果hashCode不同,则说明肯定是两个不同的对象了;如果hashCode相同再通过equals()方法进行进一步比较,如果equals方法返回true,则说明两个对象是相同的,如果equals方法返回false说明两个对象不同。 如何验证 怎么来验证这个问题呢?我们知道Ha...

    JayChen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<