都是一些基础案例 一看便会
先写一个Cat类
package com.test.set;
public class Cat {
private String name;//名字
private int month;//年龄
private String species;//品种
//构造方法
public Cat(String name, int month, String species) {
super();
this.name = name;
this.month = month;
this.species = species;
}
//getter/setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public String getSpecies() {
return species;
}
public void setSpecies(String species) {
this.species = species;
}
//toString重写方法
@Override
public String toString() {
return "Cat [姓名:" + name + ", 年龄:" + month + ", 品种:" + species + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + month;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((species == null) ? 0 : species.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if(this==obj)//如果对象都相等 那就不用比较肯定数据是相等的
return true;
//判断obj是否是Cat类的对象
if(obj.getClass()==Cat.class) {
Cat cat = (Cat)obj;
return cat.getName().equals(name)&&(cat.getMonth()==month)&&(cat.getSpecies().equals(species));
//对比三个参数如果都相等返回true 如果有一个不同就返回false
}
return false; //如果条件都不相等就直接返回false
}
}
在写CatTest主方法开始写案例
package com.test.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class CatTest {
public static void main(String[] args) {
// 定义宠物猫的对象
Cat huahua = new Cat("花花",12,"英国短毛猫");
Cat fanfan = new Cat("凡凡",5,"中华田园猫");
// 将宠物猫对象放入HashSet中
Set<Cat> set = new HashSet<Cat>();
set.add(huahua);
set.add(fanfan);
//显示宠物猫信息 迭代器
Iterator<Cat> it = set.iterator();
while(it.hasNext()) {
//调用对象方法中toString 默认项目目录.类@地址
System.out.println(it.next());
}
//再添加一个与花花属性一样的猫 重复数据不作添加判断
//通过类方法中 自动添加hashCode() and equals()这两个方法
//通过equals重写方法判断内容是否相同
System.out.println("*********************************");
System.out.println("添加重复数据后的宠物猫信息:");
Cat huahua01 = new Cat("花花",12,"英国短毛猫");
set.add(huahua01);
it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//重新插入一个宠物
System.out.println("*********************************");
System.out.println("添加花花二代后的宠物猫信息:");
Cat huahua02 = new Cat("花花二代",2,"英国短毛猫");
set.add(huahua02);
it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//在集合中查找花花的信息并输出
System.out.println("*********************************");
System.out.println("在集合中查找花花的信息并输出:");
if(set.contains(huahua)) {
System.out.println("花花找到了!");
System.out.println(huahua);
}else {
System.out.println("花花没找到!");
}
//在集合中查找花花的名字name信息并输出
System.out.println("*********************************");
System.out.println("在集合中查找花花的名字name信息并输出:");
boolean flag = false;
Cat c = null ;
it = set.iterator();
while(it.hasNext()) {
c = it.next();
if(c.getName().equals("花花")) {
flag = true;//找到了
break;
}
}
if(flag) {
System.out.println("花花找到了");
System.out.println(c);
}else {
System.out.println("花花没找到了");
}
//删除花花二代的信息并重新输出
System.out.println("*********************************");
System.out.println("删除花花二代的信息/删除年龄小于6并重新输出:");
// for(Cat cat:set) {
// if("花花".equals(cat.getName())) {
// set.remove(cat);break;
// }
// } //以上删除花花二代单独数据是没有问题 如果删除多数据就有问题 比如年龄小于6的
//我们就要一下方法删除
Set<Cat> set1 = new HashSet<Cat>();
for(Cat cat:set) {
if(cat.getMonth()<12) {
set1.add(cat);
}
}
set.removeAll(set1);
for(Cat cat:set) {
System.out.println(cat);
}
//删除集合中的所有宠物猫信息
System.out.println("*********************************");
System.out.println("删除集合中的所有宠物猫信息:");
boolean flag1 = set.removeAll(set);
//或者使用set.isEmpty判断是否为空
if(flag1) {
System.out.println("猫都被删除了");
}else {
System.out.println("猫还在");
}
}
}
代码运行结果:
Cat [姓名:凡凡, 年龄:5, 品种:中华田园猫]
Cat [姓名:花花, 年龄:12, 品种:英国短毛猫]
添加重复数据后的宠物猫信息:
Cat [姓名:凡凡, 年龄:5, 品种:中华田园猫]
Cat [姓名:花花, 年龄:12, 品种:英国短毛猫]
添加花花二代后的宠物猫信息:
Cat [姓名:凡凡, 年龄:5, 品种:中华田园猫]
Cat [姓名:花花, 年龄:12, 品种:英国短毛猫]
Cat [姓名:花花二代, 年龄:2, 品种:英国短毛猫]
在集合中查找花花的信息并输出:
花花找到了!
Cat [姓名:花花, 年龄:12, 品种:英国短毛猫]
在集合中查找花花的名字name信息并输出:
花花找到了
Cat [姓名:花花, 年龄:12, 品种:英国短毛猫]
删除花花二代的信息/删除年龄小于6并重新输出:
Cat [姓名:花花, 年龄:12, 品种:英国短毛猫]
删除集合中的所有宠物猫信息:
猫都被删除了