私はセットのすべてのサブセットを作成し、それらを重複なくグループ化しようとしています。例えば、{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}のようなセットに重複がある場合、2番目の "1"が最初の "1"と等しいとは限りません。これを実現するために、私はオブジェクト参照を比較するために "=="演算子を使用しました。これは最初の "1"と2番目の "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はnumberに' == 'になりません。 –
以下の回答のほかに、私を理解してくれた、ありがとう。 'doesTuplesHav'メソッドを実行してテストするために、私は6つの' Integer'オブジェクトを作成し、 'tuples'パラメータを模倣するためにそれらを3でグループ化して2つの' ArrayList'に追加しました。デバッグでは、値にかかわらず、タプル内のすべての整数が '数値 'に等しくなることがわかりました。うまくいけば、私はもうリファレンスコントロールが必要ないようにデザインを変更しました。 –