一、插入类
import java.util.Objects;
/**
* @author created by jackie on 2020/4/23
* @description:
*/
public class UserInfo {
private String userName;
private String city;
public UserInfo(String userName, String city) {
this.userName = userName;
this.city = city;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "UserInfo{" +
"userName='" + userName + '\'' +
", city='" + city + '\'' +
'}';
}
@Override
public int hashCode() {
return Objects.hash(userName, city);
}
@Override
public boolean equals(Object o) {
if (this == o) return true; //判断对象是否相等
if (o == null || getClass() != o.getClass()) return false;//判断传入对象o是否UserInfo的对象,如果不是肯定不相同
UserInfo userInfo = (UserInfo) o;
return Objects.equals(userName, userInfo.userName) &&
Objects.equals(city, userInfo.city);//判断属性值是否相等
}
}
二、代码
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* @author created by jackie on 2020/4/23
* @description: 用hashSet添加自定义对象、查询对象信息
*/
public class HashSetDemo {
@Test
public void hashSetTest() {
//实例化对象
UserInfo userInfo1 = new UserInfo("jackie", "GuangZhou");
UserInfo userInfo2 = new UserInfo("Ben", "ShenZhen");
UserInfo userInfo3 = new UserInfo("lily", "Shanghai");
UserInfo userInfo4 = new UserInfo("lily", "Shanghai");
//将对象插入HashSet中
Set set = new HashSet();
set.add(userInfo1);
set.add(userInfo2);
set.add(userInfo3);
set.add(userInfo4);//添加与userInfo3包含形同属性值相同的信息。如果在自定义类重写equals和hashcode方法就会添加不进去,达到去重效果。
//利用迭代器遍历输出HashSet中储存的对象
Iterator iter = set.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
//查询1:在集合中查找信息;用对象名去找
if(set.contains(userInfo1)){
System.out.println("userInfo1对象存在");
}else{
System.out.println("userInfo1对象不存在");
}
//查询2:用对象某个属性去查找对象信息
boolean flag = false ;
Iterator iter2 = set.iterator();
while(iter2.hasNext()){
UserInfo info = (UserInfo)iter2.next();
if(info.getUserName().equals("jackie")){
flag = true;
break;
}else{
}
}
if(flag){
System.out.println("jackie找到了");
}else{
System.out.println("jackie找不到");
}
//删除对象
set.remove(userInfo3);
}
}