はあなたが複雑O(n^2)
でループプラスif文の複雑さを実行するようn
項目とn
項目を比較する必要があります:あなたはArray
、List
、Map
を使用しているものは何でも
..ロジックは同じです。
一般コード:あなたの状況について
for(Item item1:yourList.getItems()){
for(Item item2:yourList.getItems())
if(item2!=item1) //not compare the item with it's self
//if they have the same component state
if(item2.getComponentState() == item1.getComponentState()){
//..do something
}
}
:
for(CustomizableMenus cust1 : ra.getAction().getCustomizablemenu()){
for(CustomizableMenus cust2 : ra.getAction().getCustomizablemenu()){
if(cust1 != cust2) //not compare the item with it's self
//if they have the same component state
if(cust1 .getComponentState() == cust2 .getComponentState()){
//..do something
}
}
編集:
そう、あなたがリストの最初の項目を取得している最初の時間のためにループに入る
cust1
を:
は、なぜ私はあなたがhere.Letの参照2つの例をループする必要がif(cust1 != cust2)
を使用する必要があります(今はリストの最初の要素です)。次に2番目のループに入り、リストの最初の項目をもう一度取得しています。今度はcust1
とcust2
は同じです(リストの最初の項目)彼らを比較したくない場合(cust1 .getComponentState() == cust2 .getComponentState())
それらは同じアイテムです。
第二のループは、...今ようにList.Andの2番目の項目であるcust2
と(リストの最初の項目がまだある)cust1
とを比較すると
第2のループ終了を続行しますcust1
がリストの2番目の項目になり、その後2番目のループに入ります。最初にcust1
(今はリストの2番目のアイテム)とcust2
(これはリストの最初のアイテムです)と比較します。次にcust1
とcust2
を比較します(これはリストの2番目のアイテムですが、cust1
もリストの2番目のアイテムです)、(cust1 .getComponentState() == cust2 .getComponentState())
のために比較する必要はありません。
私は
if(cust1 != cust2)
最後に使用していますなぜ
私はあなたが理解してほしい:
このソリューションは、学術目的のためだけである チェ。パフォーマンス面でより良いソリューションを提供するために、以下のリンクをクリックしてください。 forループ内
http://javarevisited.blogspot.gr/2015/06/3-ways-to-find-duplicate-elements-in-array-java.html
、リスト1つのより多くの時間を反復処理し、内部ループとアウトループの各値と比較し、これはあなたのリストの要素の一致が得られます。 – Rakesh
@ GoXR3Plusで – Rakesh