Collection方法集合-remove

/*
boolean remove(Object o)
remove和contains方法都想需要集合中的元素重写equals方法
因为Object中的equals方法比较的是内存地址,在现实的业务逻辑当中
不能比较内存地址,应该比较内容

*/


import java.util.*;


public class fuck5{

public static void main(String[] main){

//1.创建集合
Collection c=new LinkedList();

//2.创建Integer类型的对象
Integer i1=new Integer(10);

//3.添加元素
c.add(i1);
System.out.println(c.contains(i1));

Integer i2=new Integer(10);
c.remove(i2);
System.out.println(c.size());//o

manager m1=new manager(11,"jack");
c.add(m1);

manager m2=new manager(11,"jack");
c.remove(m2);
System.out.println(c.size());//0
//我原来以为这里不需要重写equals方法
//现在意识到只有重写equals方法,m1和m2才是真正意义上的等同


}
}





class manager{

int num;
String name;

manager(int num,String name){
this.num=num;
this.name=name;

}
public boolean equals(Object o){
if(this==o) return true;
if(o instanceof manager){
manager m=(manager) o;
if(m.num==this.num&&m.name.equals(this.name)){
return true;
}
}
return false;
}

}


/*
深入remove方法
1.迭代器的remove方法
2.集合自身的remove()方法
*/


import java.util.*;


public class fuck6{

public static void main(String[] args){

Collection c=new LinkedList();

c.add(1);
c.add(2);
c.add(3);

Iterator it=c.iterator();

//建议使用这种方法
/*这是通过迭代器删除
while(it.hasNext()){
it.next();
it.remove();
}*/

//用集合带有的remove方法删除
//会报错误
//因为你用集合的remove方法删除后需要重新获取迭代器
//
/*while(it.hasNext()){
Object o1=it.next();
c.remove(o1);
}*/

System.out.println(c.size());//0
}

}

猜你喜欢

转载自blog.csdn.net/rolic_/article/details/80299291