詳述ArrayList類中contains方法

2021-10-05 02:38:20 字數 2210 閱讀 6115

原始碼:

contains:

public boolean contains(object o)
indexof:

public int indexof(object o)  else 

return -1;

}

string型別:

arraylistnames = new arraylist();

names.add("aa");

system.out.println(names.contains("aa"));

分析:system.out.println(names.contains(「aa」));中的names.contains(「aa」)是contains**中的o,然後轉到indexof原始碼執行:和已有的資料比較,判斷是否有相同的資料,有,則return i,使得contains中 return indexof(o) >= 0;值為吐ture,string型別輸出ture。

否則return 0 ,使得contains中 return indexof(o) >= 0;值為false,string型別輸出false。

包裝類:

arraylistages = new arraylist();

ages.add(12);

system.out.println(ages.contains(new integer(12)));

分析:

integer中equals原始碼:

public boolean equals(object obj) 

return false;//如果不是integer,則直接false

}

對於包裝類,則是比較值是否相同。

自定義型別:

需先定義乙個類:

public class student 

}

自定義型別

arrayliststudents = new arraylist();

students.add(new student("111"));

system.out.println(students.contains(new student("222")));

分析:

未重寫之前:

public class student 

}

object中的epuals:

public boolean equals(object obj)
因為student中無epuals,則自定義型別呼叫object中的epuals。而object中的epuals是用來比較位址的,而自定義型別中建立了倆個student物件位址一定不同,則一定輸出false。

重寫之後:

分析:

public class student 

@override

public boolean equals(object obj)

}

instanceof:

當自定義型別中的資料型別開放後:

arraylistlist = new arraylist();//資料型別為object

list.add(new string());//輸入的資料型別為string

system.out.println(list.contains(new student("111")));

此時:重寫的equals**中:student s = (student)obj; 則是乙個將string型別的字串下轉型給student。這是不可能的,會報錯,所以,此時我們在equals中判斷是否有相同資料前,要判斷是否是同一種資料型別,是否可以下轉型,即使用instanceof

@override

public boolean equals(object obj)

return false;

}

詳述ArrayList類contains方法

原始碼 contains方法 public boolean contains object o indexof方法 public intindexof object o else return 1 string型別 arraylist names newarraylist names.add tim...

詳述ArrayList類contains方法

contains方法原始碼如下 public boolean contains object o 其呼叫的indexof方法如下 public int indexof object o else return 1 string型別的集合 arraylistnames new arraylist na...

詳述ArryList類中是contains方法

詳述arrylist類中是contains方法 原始碼public boolean contains object o public int indexof object o else return 1 string 型別 arraylistlist new arraylist list.add j...