为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

dantu163 2016-02-12 14:35:10
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相同
查看完整描述

3 回答

已采纳
?
一条小咸鱼

TA贡献457条经验 获得超255个赞

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

查看完整回答
反对 回复 2016-02-12
  • dantu163
    dantu163
    public List<Student> stSet=new ArrayList<Student>();是做了泛型的限定的
?
蜂蜜1

TA贡献4条经验 获得超3个赞

Student st 是 小明,物理考了200 分,是三年级2班的

Student st1是小花,物理考了200 分,是三年级1班的

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

查看完整回答
1 反对 回复 2016-02-15
  • dantu163
    dantu163
    为什么单独比较值却是相等的 Student st=new Student(200,"物理"); Student st1=stSet.get(1); 它是在前面程序中用与st相同的new Student(200,"物理");创建的呀
?
wilsonwan

TA贡献4条经验 获得超6个赞

地址不同,st是new的新类,st1是获取set中已有类的引用

查看完整回答
1 反对 回复 2016-02-15
  • dantu163
    dantu163
    好象讲不能,public List<Student> stSet=new ArrayList<Student>();是做了泛型的限定的
  • 3 回答
  • 0 关注
  • 1605 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信