概述
package TestCollection;
import java.util.ArrayList;
import java.util.Collection;
public static void main(String[] args) {
Collection<Name> a = new ArrayList<Name>();
a.add(new Name("王","东旭"));
a.add(new Name("杨","炳哲"));
a.remove(new Name("王","东旭"));
}
}
class Name{
private String firstName;
private String lastName;
public Name(){
}
public Name(String firstName,String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
public boolean equals(Object other){
if(other instanceof Name){
Name otherName = (Name)other;
return this.firstName == otherName.firstName && this.lastName == otherName.lastName;
}
return super.equals(other);
}
public String toString(){
return firstName + " " + lastName;
}
}
容器不管哪一种都会implements Collection接口,在几乎每种容器中都是通过容器元素本身的equals方法判断是否相等,remove方法也是通过equals从头遍历找出相等的然后删除。
可以发现如果容器元素未定义equals后,运行remove将无法删除元素,原因就是Collection自动调用了元素父类的equals方法进行比较,而在Object类中的equals方法
public boolean equals(Object obj){
return this == obj;
}
显然是通过比较两个对象的地址,所以除非在容器中的元素有别处的引用,否则不会删除。
最后
以上就是无心胡萝卜为你收集整理的在java容器中remove方法原理的全部内容,希望文章能够帮你解决在java容器中remove方法原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复