Java教程

集合——HashSet接口

本文主要是介绍集合——HashSet接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

set接口简述:元素无序 且 不允许有重复元素。Set接口和List接口继承自Collection接口。

     

 向HashSet存入对象时,对象一般会重写hashCode()和equals()方法。

 

 代码演示:

此时存储并输出了两个一样的。因为没有重写hashCold()和equal()方法。

import java.util.HashSet;
import java.util.Iterator;

public class HashSetDemo {
    public static void main(String[] args) {
        //创建HashSet对象
        HashSet hs=new HashSet();
        //给集合中添加自定义对象.
        hs.add(new Student("李白",21));
        hs.add(new Student("杜甫",19));
        hs.add(new Student("张飞",22));
        hs.add(new Student("李白",21));//存储了两个“李白”
        //取出集合中的每个元素
        Iterator it=hs.iterator();
        while (it.hasNext()){
            Student s=(Student)it.next();
            System.out.println(s);
        }

学生类:
public class Student {
    private String name;
    private int age;

    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;
    }

    @Override    //重写String方法,利于输出完整的String量。ALT+insert键选择to String
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    //此时从上到这,没有重写hashCold()和equal()方法。所以HashSet集合可以存储一样的元素
  此时输出:

Student{name='李白', age=21}
Student{name='张飞', age=22}
Student{name='杜甫', age=19}
Student{name='李白', age=21}   //此时存储并输出了两个一样的。元素重复了

///////////////////////////////////////////////////////////////////////////////////////////

  @Override  //ALT+insert键选择 hashCold()和equal(),直接默认下一步就行了。
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      Student student = (Student) o;
      return age == student.age &&
            Objects.equals(name, student.name);
  }

  @Override    
  public int hashCode() {
     return Objects.hash(name, age);
  }

//此时到这,以经重写hashCold()和equal()方法。
此时输出:

E:\Files\java11\bin\java.exe "-javaagent:E:\Files\Idea\IntelliJ IDEA 2018.2.2\lib\idea_rt.jar=57273:E:\Files\Idea\IntelliJ IDEA 2018.2.2\bin" -Dfile.encoding=UTF-8 -classpath E:\Files\Idea\javacold\out\production\demo01 com.libai.www.HashSetDemo
Student{name='李白', age=21}
Student{name='杜甫', age=19}
Student{name='张飞', age=22}  //李白这个元素此时不能重复

Process finished with exit code 0

   }
}


 

这篇关于集合——HashSet接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!