詳述ArrayList類contains方法

2021-10-05 02:36:16 字數 2661 閱讀 7080

原始碼:

contains方法

public

boolean

contains

(object o)

indexof方法

public

intindexof

(object o)

else

return-1

;}

string型別:

arraylist

names =

newarraylist

();names.

add(

"tim");

system.out.

println

(names.

contains

("tim"))

;

分析:

1、建立乙個集合names,新增乙個元素"tim",然後判斷"tim"這個元素在不在集合names中

2、首先會呼叫contains方法,將"tim"傳為o,然後呼叫indexof方法,判斷o不為null之後,將o與集合names中的元素對比,如果相同,返回true,不相同,返回false

3、string型別的物件,contains方法實質上呼叫的是string物件中的equals

包裝類:比如說integer包裝類

arraylist

ages =

newarraylist

();ages.

add(18)

;system.out.

println

(ages.

contains(18

));

分析:

1、建立乙個集合ages,新增乙個元素18,然後判斷18這個元素在不在集合ages中

2、首先會呼叫contains方法,將18傳為o,然後呼叫indexof方法,判斷o不為null之後,將o與集合names中的元素對比,如果相同,返回true,不相同,返回false

3、包裝類型別的物件,contains方法實質上呼叫的是包裝類物件中的equals

自定義類型別:

自定義乙個student類:

public

class

student

}

arraylist

students =

newarraylist

();students.

add(

newstudent

("111"))

;system.out.

println

(students.

contains

(new

student

("111"))

);

分析:

一、重寫前

雖然id都是111,但是輸出結果為false,因為比較的是位址是否相同,他們明顯是兩個物件,所以位址肯定不同,輸出的就是false,就出現問題了,所以要重寫equals方法

二、重寫後

public

class

student

@override

public

boolean

equals

(object obj)

}

首先會呼叫contains方法,將"111"傳為o,然後呼叫indexof方法,判斷o不為null之後,將o與集合students中的元素對比,這個時候使用的是重寫後的equals,obj表示的是集合中的元素,首先要將它下轉型為student,然後將它與contains(new student(「111」))這個new student進行對比,如果相同,返回true,不相同,返回false

三、instanceof

public

class

student

@override

public

boolean

equals

(object obj)

return

false;}

}

arraylist

list =

newarraylist

();list.

add(

newstring()

);system.out.

println

(list.

contains

(new

student

("111"))

);

如果原本是object類型別的,再用上面的就會出錯,就需要新增instanceof,判斷能否下轉型,如果連下轉型都無法實現,就不需要對比了,直接返回false就可以了

詳述ArrayList類contains方法

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

詳述ArrayList類中contains方法

原始碼 contains public boolean contains object o indexof public int indexof object o else return 1 string型別 arraylistnames new arraylist names.add aa sys...

詳述抽象類

在介紹抽象類之前,我們想通過 來引入一下。背景 mammal是whale的父類。double price 9 mammal mammal new whale mammal.move 第一行 中實際上有乙個自動型別轉換的過程,因為9屬於整形,要把他變到更大的double型別就要自動型別轉換。第二三行 ...