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));
}stSet是定义的Student类的集合
上面程序结果显示为:
两个值不等
Id相同
Name相同
如果 set 中存在指定的元素,则将其移除(可选操作)。更确切地讲,如果此 set 中包含满足 (o==null ? e==null : o.equals(e)) 的元素 e,则移除它。如果此 set 包含指定的元素(或者此 set 由于调用而发生更改),则返回 true(一旦调用返回,则此 set 不再包含指定的元素)。
需要参数类型定义了equals行为才能起作用