-学习笔记-set集合-以及一个示例小程序
MainClass
package com.xuedao.main;
import java.util.HashSet;
import java.util.Set;
import com.xuedao.pojo.Person;
public class MainClass {
/**
* set集合:元素不能重复,无序{(a,b)=(b,a)},可以添加null
* 判断重复:通过一个equals方法判断的
*
* equals 在对象中用的话是无定义的
* == 比较的是两个对象地址是否相等
* hashCode (哈希码值是每个对象在内存中的一个编号)
*
* @param args
*/
public static void main(String[] args) {
Set<Person> set = new HashSet<>();
//添加数据
set.add(new Person("xj",11));
set.add(null);
set.add(new Person("小西",15));
set.add(new Person("小北",20));
//删除
System.out.println(set);
set.remove(new Person("xj",11));
System.out.println(set);
//遍历
for (Person person : set) {
System.out.println(person);
}
//查询
boolean b = set.contains(new Person("王五",15));
System.out.println(b);
}
}
Person
package com.xuedao.pojo;
public class Person{
private String name;
private int 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;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
//hashCode和equals的方法使两个集合中的对象相等,通常一起使用
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;//强转
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}