我写的也没问题啊?为什么用名字查找的输出结果是“花花没找到”呢?
package com.immoc.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class CatTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义宠物猫对象
Cat huahua=new Cat("花花",12,"英国短毛猫");
Cat fanfan=new Cat("凡凡",3,"中华田园猫");
//将宠物猫对象放入HashSet中
Set set=new HashSet();
set.add(huahua);
set.add(fanfan);
//显示宠物猫信息,只要提前重写好toString方法,系统会自动调用重写好的toString方法
Iterator it=set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
System.out.println("************************************");
//1.在集合中查找对象的信息并输出
if(set.contains(huahua)) {
System.out.println("花花找到了");
}else {
System.out.println("花花没找到");
}
System.out.println("************************************");
//2.在集合中使用名字查找“花花”的信息并输出
boolean flag=false;
Cat c=null;
it=set.iterator();
while(it.hasNext()) {
c=(Cat)it.next();
if(c.getName().equals("花花")) {
flag=true;
break;
}
if(flag) {
System.out.println("花花找到了");
System.out.println(c);
}else{
System.out.println("花花没找到");
}
}
}
}
正在回答 回答被采纳积分+1
package com.immoc.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;
}
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方法,那么在测试方法中HashSet调用出来的对象输出的是地址信息而不是对象内容!
@Override
public String toString() {
return "[姓名:" + 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;
}
if(obj.getClass()==(Cat.class)) {
Cat cat=(Cat)obj;
return cat.getName().equals(name)&&(cat.getMonth()==month);
}
return false;
}
}
以上是补写我的问题中的自定义类,求大神解答一下
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星