You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中HashSet的size()方法如何调用?附相关代码示例

如何获取并展示HashSet的size()值

嘿,我来帮你搞定这个问题!首先,HashSet的size()方法本身用法超简单——直接调用就能返回集合里的元素数量,不过咱们得先把你没写完的代码补全,顺便把关键细节说清楚。

完整可运行代码

Student类(name包下)

package name;
public class Student {
    private String name;
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }

    // 重点:如果想让同名学生被视为重复元素,必须重写这两个方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return name != null ? name.equals(student.name) : student.name == null;
    }

    @Override
    public int hashCode() {
        return name != null ? name.hashCode() : 0;
    }
}

Client1类(client包下)

package client;
import name.Student;
import java.util.Set;
import java.util.HashSet;
import java.util.Scanner;

public class Client1 {
    public static void main (String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 实例化HashSet,指定存储Student类型
        Set<Student> studentSet = new HashSet<>();
        
        System.out.println("请输入学生名字(输入exit停止添加):");
        while (true) {
            String inputName = scanner.nextLine().trim();
            if ("exit".equalsIgnoreCase(inputName)) {
                break;
            }
            // 创建学生对象并添加到集合
            Student student = new Student();
            student.setName(inputName);
            studentSet.add(student);
        }
        
        // 核心:调用size()获取集合大小并展示
        int studentCount = studentSet.size();
        System.out.println("当前HashSet里一共有 " + studentCount + " 个学生");
        
        scanner.close();
    }
}

关键说明

  • size()的基本用法:只要你正确实例化了HashSet(像代码里的new HashSet<>()),直接调用studentSet.size()就能得到元素的数量,返回值是int类型,直接输出即可。
  • 去重的核心细节:你原来的Student类没重写equals()和hashCode(),这会导致即使两个Student对象名字完全一样,HashSet也会把它们当成不同的元素,size()会跟着增加。如果想让同名学生被视为重复元素(符合HashSet去重的预期),一定要加上代码里那两个重写的方法。
  • 避免空指针陷阱:如果只是声明了Set<Student> studentSet;但没实例化,调用studentSet.size()会抛出NullPointerException,所以一定要记得用new创建实例。

内容的提问来源于stack exchange,提问作者Encang Cutbray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:03:46