当前位置: 首页 > news >正文

【JavaSE】Java基础语法(二十八):HashSet集合

文章目录

  • 1. HashSet集合概述和特点
  • 2. HashSet集合的基本应用
  • 3. 哈希值
  • 4. HashSet集合存储学生对象并遍历【应用】


在这里插入图片描述

1. HashSet集合概述和特点

  • 底层数据结构是哈希表
  • 存取无序
  • 不可以存储重复元素
  • 没有索引,不能使用普通for循环遍历

2. HashSet集合的基本应用

存储字符串并遍历

public class HashSetDemo {public static void main(String[] args) {//创建集合对象HashSet<String> set = new HashSet<String>();//添加元素set.add("hello");set.add("world");set.add("java");//不包含重复元素的集合set.add("world");//遍历for(String s : set) {System.out.println(s);}}
}

3. 哈希值

  • 哈希值简介
    是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值
  • 如何获取哈希值
    Object类中的public int hashCode():返回对象的哈希码值
  • 哈希值的特点
    • 同一个对象多次调用hashCode()方法返回的哈希值是相同的
    • 默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的
      哈希值相同

4. HashSet集合存储学生对象并遍历【应用】

  • 案例需求
    创建一个存储学生对象的集合,存储多个学生对象,使用程序实现在控制台遍历该集合
    要求:学生对象的成员变量值相同,我们就认为是同一个对象

  • 代码实现

public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.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;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;if (age != student.age) return false;return name != null ? name.equals(student.name) : student.name ==null;}@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;}
}
public class HashSetDemo02 {public static void main(String[] args) {//创建HashSet集合对象HashSet<Student> hs = new HashSet<Student>();//创建学生对象Student s1 = new Student("刘亦菲", 30);Student s2 = new Student("宋祖儿", 35);Student s3 = new Student("林黛玉", 33);Student s4 = new Student("林黛玉", 33);//把学生添加到集合hs.add(s1);hs.add(s2);hs.add(s3);hs.add(s4);//遍历集合(增强for)for (Student s : hs) {System.out.println(s.getName() + "," + s.getAge());}}
}

总结
HashSet集合存储自定义类型元素,要想实现元素的唯一,要求必须重写自定义类型的hashCode
方法和equals方法


在这里插入图片描述

http://www.lryc.cn/news/91651.html

相关文章:

  • 压缩感知重构之匹配追踪算法
  • 【SpinalHDL快速入门】4.6、复合类型之Vec
  • 探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行
  • 有奖励!2023陕西省首台(套)重大技术装备产品项目申报条件、认定材料
  • 2023/6/6总结
  • api习题
  • (STL之string)string类的用法详解
  • 基于RT-Thread快速上手SD NAND 虚拟文件系统
  • 性能测试实战
  • 【PWN · 总结】system返回shell(‘/bin/sh‘、‘sh‘、$(0))
  • 《庄子》笔记
  • 五、VBO、EBO 和 VAO
  • 数据库期末复习(7.2)查询优化
  • 深入探索:在std::thread中创建并管理QEventLoop的全面指南
  • 【Netty】Netty中的超时处理与心跳机制(十九)
  • 尚硅谷大数据hadoop教程_mapReduce
  • 一键启停脚本
  • 20230604_Hadoop命令操作练习
  • hashCode 与 equals(重要)?
  • 华为OD机试(2023.5新题) 需要打开多少监控器(java,py,c++,js)
  • 209.长度最小的子数组
  • react antd Modal里Form设置值不起作用
  • idea连接Linux服务器
  • 在windows环境下使用winsw将jar包注册为服务(实现开机自启和配置日志输出模式)
  • 汽车通用款一键启动舒适进入拓展蓝牙4G网络手机控车系统
  • QSettings Class
  • 【vue】关于vue中的插槽
  • Springboot整合Mybatis Plus【超详细】
  • 接口测试-使用mock生产随机数据
  • Kohl‘s百货的EDI需求详解