重写了OneElem中equals方法使得名字相同的话就判定arraylist中contains该元素
[code="java"]public class Test {
public static void main(String[] args) {
ArrayList oe=new ArrayList();
OneElem o;
for(int i=0; i o=new OneElem("one");
if(oe.contains(o))
System.out.println("Contain");
else{
System.out.println("None");
oe.add(o);
}
}
o=new OneElem("one");
if(oe.contains(o))
System.out.println("Contain");
else{
System.out.println("None");
oe.add(o);
}
}
}
[/code]
以上可以得出我想要的结果
[code="java"]public class Test1 {
public static void main(String[] args) {
ArrayList oe=new ArrayList();
OneElem o;
for(int i=0; i<3; i++){
o=new OneElem(""+i);
if(oe.contains(o))
System.out.println("Contain");
else{
System.out.println("None");
oe.add(o);
}
}
o=new OneElem(""+1);
if(oe.contains(o))
System.out.println("Contain");
else{
System.out.println("None");
oe.add(o);
}
}
}
[/code]
以上不行,我最后添加的它认为是新元素...这两个Test我用的是同一个OneElem类...这是为了什么...
你最好把equals贴出来 这是我执行的结果
package com.test;
import java.util.ArrayList;
class OneElem {
String name;
OneElem(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
@Override
public boolean equals(Object arg0) {
if (arg0 != null && arg0 instanceof OneElem) {
return this.getName().equals(((OneElem) arg0).getName());
}
return false;
}
}
public class Test {
public static void main(String[] args) {
ArrayList<OneElem> oe = new ArrayList<OneElem>();
OneElem o;
for (int i = 0; i < 3; i++) {
o = new OneElem("" + i);
if (oe.contains(o))
System.out.println("Contain");
else {
System.out.println("None");
oe.add(o);
}
}
o = new OneElem("" + 1);
if (oe.contains(o))
System.out.println("Contain");
else {
System.out.println("None");
oe.add(o);
}
}
}
结果:
None
None
None
Contain
你把OneElem也贴出来撒
if (arg0 != null && arg0 instanceof OneElem)
arg0 instanceof OneElem 表示是OneElem 的一个实例
因为equals的参数为object的,所以可以接受任何的参数,对于不是OneElem类型的则return false。