我对contains 的理解

    技术2022-05-19  23

    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)));

     }}

                    


    最新回复(0)