我正在嘗試創建一個集合的所有子集並將它們分組而不重複。例如,在{1,2,3,4,5,6},{(1,2),(3,4),(5,6)}這樣的集合中,這個元組可以在另一方面是有效的{ (1,2),(2,4),(5,6)}這個元組不應該是有效的,因爲它有兩個2號實例,儘管該集只有一個2號實例。如何強制eclipse創建不同的對象引用
要保證這個非重複的形式,我有一個小的方法,檢查給定的子集,如果它有作爲參數傳遞給該方法的數字,它返回true。
問題是,當像{1,2,3,1,5,6}這樣的集合中有重複時,不應該說第二個「1」等於第一個「1」。爲了做到這一點,我使用「==」運算符來比較對象引用,我希望這會使第一個「1」和第二個「1」有所不同,但它沒有。顯然,Eclipse爲在編譯時創建並具有相同值的相同類型的對象創建相同的對象引用。我如何強制Eclipse創建不同的對象引用?如果有一種方法來標記具有唯一編號的對象,這也有幫助。
這裏是方法:
private boolean doesTuplesHave(Integer number, ArrayList<ArrayList<Integer>> tuples){
for(ArrayList<Integer> list : tuples){
for(Integer numinTuple : list){
if(numinTuple == number){
return true;
}
}
}
return false;
}
Eclipse是發展環境;它不是編譯器('javac')或運行時('jre','java') - 它是創建'Integer'實例的Java虛擬機。我可以強制你的for循環for(Integer numinTuple:list)'創建'Integer'的新單獨實例,但是numinTuple將不會'=='編號。 –
除了下面的答案,你明白我,謝謝。爲了運行和測試'doesTuplesHav'方法,我創建了6個'Integer'對象,並通過將它們分組爲3來模仿tuples參數,將它們添加到2'ArrayList'中。在調試中,我發現元組中的所有整數都等於'number',而不管它們的值如何。希望我改變了設計,所以我不再需要任何參考控制。 –