Java中的HashSet详解和使用示例_动力节点Java学院整理

yizhihongxing

Java中的HashSet详解和使用示例

什么是HashSet?

HashSet是Java的一个集合类,它实现了Set接口,用于存储不重复的元素。HashSet基于哈希表实现,查询的效率非常高,不过HashSet不保证元素的顺序。在使用HashSet时,需要注意元素必须重写hashCode()和equals()方法。

HashSet的常用方法

添加元素方法

向HashSet中添加元素使用add(E e)方法,可以添加任意类型的元素,返回值为boolean类型。如果 HashSet 中没有该元素,则返回true,否则返回false。

HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");

判断元素是否存在方法

判断HashSet中是否存在该元素使用contains(Object o)方法,该方法返回boolean类型。如果HashSet中存在o元素,则返回true,否则返回false。

HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
System.out.println(set.contains("B")); // 输出 true
System.out.println(set.contains("D")); // 输出 false

删除元素方法

从HashSet中删除元素使用remove(Object o)方法,该方法返回boolean类型。如果HashSet中存在o元素,则删除该元素并返回true,否则返回false。

HashSet<String> set = new HashSet<String>();
set.add("A");
set.add("B");
set.add("C");
set.remove("B");
System.out.println(set); // 输出 [A, C]

HashSet使用示例

示例一:存储学生信息

假设我们需要将若干学生的信息存储到HashSet中。

class Student {
    public int id;
    public String name;
    public int age;

    public Student(int id, String name, int age) {
        this.id = id;
        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;
        Student student = (Student) o;
        return id == student.id;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}

HashSet<Student> set = new HashSet<Student>();
set.add(new Student(1, "张三", 18));
set.add(new Student(2, "李四", 19));
set.add(new Student(3, "王五", 20));
set.add(new Student(1, "张三", 18)); // 重复元素

System.out.println(set.size()); // 输出 3
System.out.println(set.contains(new Student(1, "张三", 18))); // 输出 true

在这个示例中,我们定义了一个Student类,用于存储学生的基本信息。在创建HashSet之前,我们需要在Student对象中重写hashCode()和equals()方法,实现比较学生的id是否相同。

示例二:去重

假设我们需要将最近一周中每天登录我们网站的用户的用户名保存到一个HashSet中,以便后续统计活跃用户数。但有些用户可能一周内登录了多次,我们只需记录每个用户的用户名一次。

HashSet<String> userSet = new HashSet<String>();
userSet.add("Alice");
userSet.add("Bob");
userSet.add("Charlie");
userSet.add("Dan");
userSet.add("Charlie"); // 重复元素

System.out.println(userSet.size()); // 输出 4

在这个示例中,我们只需要往HashSet中添加每个用户的用户名,HashSet会帮我们自动去重,最后输出HashSet的size即为活跃用户数量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的HashSet详解和使用示例_动力节点Java学院整理 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 基于PostgreSQL/openGauss 的分布式数据库解决方案

    1. 基于PostgreSQL/OpenGauss的分布式数据库解决方案 PostgreSQL/OpenGauss是开源的关系型数据库管理系统。这种数据库管理系统支持高度灵活和可扩展性的结构化数据存储和查询。 使用PostgreSQL/OpenGauss,我们可以轻松地实现分布式数据库解决方案。下面是实现基于PostgreSQL/OpenGauss的分布式数…

    other 2023年6月26日
    00
  • laravel入门知识点整理

    Laravel入门知识点整理 1. 什么是Laravel Laravel是一个免费开源的PHP Web开发框架,它采用了MVC(Model-View-Controller)设计模式,有着优雅的语法和简便的操作,可以帮助开发者快速完成高质量的Web应用程序。 2. 安装Laravel 在开始使用Laravel之前,必须先在计算机上安装它。Laravel可以通过…

    other 2023年6月27日
    00
  • Java多线程编程详细解释

    Java多线程编程详细解释 简介 Java中的多线程编程是一种同时执行多个线程的方式,它可以提高程序性能和资源利用率。本文将详细介绍Java多线程编程,让你能够了解创建和管理线程的方法,以及如何避免线程安全问题。 创建线程的方法 Java中有两种创建线程的方法: 方法一:继承Thread类 class MyThread extends Thread { pu…

    other 2023年6月27日
    00
  • 一句sql更新两个表并可更新对应的字段值具体实现

    首先,需要明确的是,一句 SQL 更新两个表并可更新对应的字段值其实是一个比较复杂的操作,需要一定的 SQL 技能和经验。下面是具体实现的攻略: 使用 MySQL 的多表更新语法实现。 MySQL 支持使用多个表进行更新,可以使用 UPDATE 语句完成该操作。示例代码如下: UPDATE table1, table2 SET table1.field1 =…

    other 2023年6月25日
    00
  • 基于Android中获取资源的id和url方法总结

    基于Android中获取资源的id和url方法总结 在Android开发中,我们经常需要获取资源的id和url。下面是一些获取资源id和url的方法总结。 获取资源id 1. 通过资源名称获取id 可以使用getIdentifier()方法通过资源名称获取资源的id。该方法接受三个参数:资源名称、资源类型和应用程序的包名。 int resourceId = …

    other 2023年9月6日
    00
  • pythonsizeof函数

    当然,我可以为您提供有关“python sizeof函数”的攻略,以下是详细说明: Python sizeof函数 在Python中,sizeof()函数用于返回对象字节大小。该函数可以用于任何对象,包括内置类型和用户定义的对象。在本教程中,我们将介绍如何使用sizeof()函数以及它的用法。 语法 sizeof()函数的语法如下: import sys s…

    other 2023年5月7日
    00
  • 逆水寒九灵什么属性重要 基本属性对九灵加成数据测试介绍

    当然,下面是关于逆水寒九灵基本属性加成数据测试的完整攻略,包含两个示例说明: 基本属性对九灵加成数据测试介绍 首先,选择一个九灵,例如「风灵」作为测试对象。 确定九灵的基本属性,包括攻击力、防御力、生命值等。 创建一个测试角色,并记录下其基本属性。 使用测试角色攻击一个固定的目标,记录下造成的伤害。 将测试角色装备上九灵「风灵」,并记录下装备后的基本属性。 …

    other 2023年10月17日
    00
  • cdr怎么再制页面? cdr插入页面的方法

    下面我将详细讲解如何使用 CDR(CorelDRAW)重新制作页面,以及如何插入页面元素。 如何重新制作页面 步骤 1:新建画布 首先需要在 CDR 中新建一个空白的画布,可以通过菜单栏的 “文件 – 新建” 命令或者快捷键 Ctrl + N 来实现。你可以根据页面的尺寸需求来设置画布的大小和分辨率。 步骤 2:导入原页面 接下来需要将原页面导入到 CDR …

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部