remove(st)删除集合元素却失败

public void deleteSet()
{
Student st=new Student(200,"物理");
Student st1=stSet.get(1);
//对象值比较不相等,而下面的单独属性比较却是相等的
if ( st1.equals(st) )
{
System.out.println("两个值相同");
}
else
{
System.out.println("两个值不等");
}
if (st.getId() == st1.getId()) 
System.out.println("Id相同");
else 
System.out.println("Id不等!");
if (st.getName().equals(st1.getName())) 
System.out.println("Name相同");
else 
System.out.println("Name不等!");
//不知道的为何删除元素失败?
stSet.remove(st);
//这样删除却是正确的结果
//stSet.remove(stSet.get(1));
}

结果为:

两个值不等

Id相同

Name相同

dantu163
浏览 1614回答 3
3回答

一条小咸鱼

st是student类型的对象(的引用),stSet.get(1)是object的对象(的引用)

蜂蜜1

Student st 是 小明,物理考了200 分,是三年级2班的Student st1是小花,物理考了200 分,是三年级1班的两个人物理都是200分,但是他们其实不是一个人,你去三年级1班找小明,是找不到的。所以 stSet.remove(st);失败

wilsonwan

地址不同,st是new的新类,st1是获取set中已有类的引用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java