HashSet的使用(2)

 

创建一个Person类


package com.sean.base.SetStudy;

import java.util.Objects;

/**
* @author 关根普
* @create 2021-02-25 14:43
*/
public class Person {private String name;
private int age;

public Person(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
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}

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

package com.sean.base.SetStudy;

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

/**
HashSet的使用
* 存储结构:哈希表(数组+链表+红黑树)
* 存储过程
* (1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空执行 第二步。
* (2)再执行equals方法,如果equals方法为true,则认为是重复,否则,形成链表
* @create 2021-02-25 14:42
*/
public class Demo03 {
public static void main(String[] args) {
//创建集合
HashSet<Person> persons = new HashSet<Person>();
//1添加数据
Person p1 = new Person("刘德华",20);
Person p2 = new Person("林志玲",25);
Person p3 = new Person("郭德纲",23);

persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(new Person("郭德纲",23));

System.out.println("元素个数:"+persons.size());
System.out.println(persons.toString());

//2删除
/*persons.remove("刘德华");
System.out.println("删除之后:"+persons.size());*/

//3遍历
//3.1使用增强for
System.out.println("-----------3.1使用增强for---------");
for (Person person:persons
) {
System.out.println(person);

}
//3.2使用迭代器
System.out.println("-----------3.2使用迭代器---------");
Iterator<Person> it=persons.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
//4判断
System.out.println(persons.contains("小米"));
System.out.println(persons.isEmpty());
}
}

 

 
posted @ 2021-02-25 14:52  之樾  阅读(31)  评论(0)    收藏  举报