Java学习之HashSet

Java学习之HashSet

基础知识

  • HashSet是Set接口的一个实现类,存储的元素都是无序且不重复的
  • HashSet集合存储一个元素时,首先会调用该元素的hashcode()方法来确定元素存储的位置,然后调用该元素的equals()方法来确保该集合中没有重复的元素
  • 当向集合存储一个元素的时候,为了保证集合能够正常的工作,要在存入对象时,重写Object类中的hashcode()方法和equals()方法,对于存储一个字符串对象来说,String类已经默认重写了两个方法,但是如果要存储用户自定义的数据类型,就需要自己重写上述两种方法

Demo案例

package com.tang.chapter6.collection;

import java.util.HashSet;

/**
 * @author Tang
 */
public class Student {
    String id;
    String name;
    public Student(String id, String name){
        this.id = id;
        this.name = name;
    }
    @Override
    public String toString(){
        return id + ":" + name;
    }
    @Override
    public int hashCode(){
        return id.hashCode();
    }
    @Override
    public boolean equals(Object obj){
        if (this == obj){
            return true;
        }
        if (!(obj instanceof Student)){
            return false;
        }
        Student stu = (Student) obj;
        return this.id.equals(stu.id);
    }

    public static void main(String[] args) {
        HashSet<String> stu = new HashSet<String>();
        Student stu1 = new Student("1","zs");
        Student stu2 = new Student("2","ls");
        Student stu3 = new Student("2","ls");
        stu.add(stu1.toString());
        stu.add(stu2.toString());
        stu.add(stu3.toString());
        System.out.println(stu);
    }
}

上一篇:贪心算法 求解集合覆盖问题


下一篇:Set集合