第一篇:Java——HashSet 的简单了解与使用

本文详细解析了HashSet的特点、如何保证元素唯一性以及其底层数据结构。同时,提供了存储字符串和自定义对象到HashSet的实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Set的特点:不包含重复元素

HashSet如何保证元素唯一性的:通过重写hashcode();与equals();方法

HashSet底层数据结构:哈希表,数组+链表(JDK1.8之后引入红黑树,即底层数据结构为数组+链表+红黑树:当链长达到8之后,转为红黑树存储)

-------------------------------------------------------------------------------------------

例1:创建一个HashSet存入数据并遍历集合:

    public static void main(String[] args) {
   	 	//新建一个HashSet集合,泛型为String类型
        HashSet<String> hs = new HashSet<>();
        //向集合中添加元素
        hs.add("a");
        hs.add("b");
        hs.add("c");
        hs.add("d");
        hs.add("e");
        hs.add("f");
        //利用for循环遍历集合
        for (String h : hs) {
            System.out.println(h);
        }
    }
输出:
a
b
c
d
e
f

例2:存储自定义对象到Hash集合中

——新建Student类
public class Student {
    //创建私有的name与age
    private String name;
    private int age;
    
    //提供空参构造、有参构造
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
	//	提供set/get方法
    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;
    }
	//重写toString方法
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
——新建主类Test
public class Test {
    public static void main(String[] args) {
    	//新建HashSet集合,传入Student类型
        HashSet<Student> set = new HashSet<>();
        //向集合中添加元素
        set.add(new Student("张三",20));
        set.add(new Student("李四", 29));
        set.add(new Student("王五", 80));
        set.add(new Student("赵六", 26));
        //遍历集合
        for (Student student : set) {
            System.out.println(student);
        }
    }
}
输出:
Student{name='李四', age=29}
Student{name='赵六', age=26}
Student{name='张三', age=20}
Student{name='王五', age=80}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值