關於List的contains方法問題

2021-07-25 04:37:53 字數 574 閱讀 3052

double i = math.random()*(num*num);

if(!randoms.contains(i))

int j = randoms.get(loop).intvalue();

上面是我寫的乙個**,想要生成乙個0到num*num的隨機數,不過執行後發現j仍然會出現重複。

我查閱了contains的原始碼,是這樣的:

contains(object o)    

public

intindexof(object o) else

return -1;

}

可以發現,內部使用的其實是equals這個方法,眾所周知,equals如果用來比較兩個物件,其實是比較的它們二者的位址。回頭一看,原來是double寫成了double,i成了物件了。

如果我真的想比較兩個物件的值,我可以改寫equals方法如下:

equals(object obj)    

return super.equals(obj);

關於contains 使用的注意

在使用 contains 判斷集合中是否有此物件的時候,需要重寫比較物件的equals方法 把需要比較的字段寫入比較 本博文主要介紹的是contains關於物件的比較 例子 list使用contains。例子 public static void main string args 下面是重寫 ind...

關於C 的Equals和Contains方法

今天寫 需要過濾重複的資料,因資料是用list儲存的。故此想到了contains方法,只是不太確定是否可以匹配到,於是看了下他的源 發現他先用的arrary的indexof 來操作,但是看到最後,卻發現其實是根據equals方法來判斷。鑑於有引用型別和值型別的相等判斷會牽扯到深度的問題 即要判斷引用...

contains方法在list(實體類)中騷套路

在list集合中放置乙個實體類物件如何使用contains類進行比較是否為物件的子集listdrugasocdos.contains listdrugasocdo 在contains原始碼中發現 public boolean contains object o else return false c...