contains 是个布尔型的方法,
contains内部如何实现要看具体是哪种容器,ArrayList这种随机访问容器内部就是用equals去比较的(基本上就是和equals 的用法一样,比较的是对象的内容),和你常识中的实现应该是一样的,HashSet这类容器就是用hashcode来比较的了,如果hashcode相同时才会去equals 比较。用代码实现下:
import java.util.ArrayList; import java.util.HashSet;
public class Foo { int value; Foo(int value) { this.value = value; } public boolean equals(Object obj) { if (obj instanceof Foo) { Foo foo = (Foo) obj; return value == foo.value; } else { return false; } } public static void main(String[] args) { ArrayList list = new ArrayList(); HashSet set = new HashSet(); list.add(new Foo(1)); set.add(new Foo(1)); System.out.println(list.contains(new Foo(1)) + "," + set.contains(new Foo(1)));
}}