2012-03-05 21 views
2

ArraylistのアイテムのうちNONEに 'slotted'属性をfalseに設定すると、コードを実行します。私は次のコードを使用します:特定の属性を持つArraylistのアイテムをカウントする

int p=0; 

for (int i = 0; i < AppleList.size();i++){ 
    if (AppleList.get(i).slotted = true){ 
     p++; 
    } 

if (p == 0){ 

    //EXECUTE CODE 

} 

これを行う方法はありますか?

+2

'AppleList.get(i).slotted = true'は' AppleList.get(i) .slotted == true'またはさらに良い 'AppleList.get(i).slotted' –

+0

「better」というと、より効率的な/より速いという意味ですか?代わりに各ループにaを使用できます; –

+0

また、インデックス作成よりも高速なイテレータを使用します。 – dhaag23

答えて

5

あなたが強化さ-用ループとラベルを使用してそれを行うことができます:のであれば任意の要素はfalseからslottedセット、コードを実行していないがあります私は大きな(O)を等しくすることができるので、それがパフォーマンスに異なる可能性があり、ここでこの

boolean flag=true; 

for (int i = 0; i < AppleList.size();i++){ 
    if (!AppleList.get(i).slotted){ 
     flag = false; 
     break; 
    } 
    } 
if (flag){ 
    //EXECUTE CODE 
} 

ようにそれをやる(1)「私は意味場合の最初の項目あなたがコードを実行する必要がある場合は、ループを完成させる必要はありません。

+1

ブール変数を必要としないクリエイティブなソリューションです。 – phlogratos

+1

質問を理解するために+1 – paislee

+1

これはすてきで、きれいできれいに見える!私は今週末にそれをチェックし、それが有効なら有効な回答を設定することを願っています! Thnx! –

2
for (int i = 0; i < AppleList.size() && !AppleList.get(i).slotted; i++) { 
} 

if (i == AppleList.size()) { 
    //EXECUTE CODE 
} 

または

boolean foundNonSlotted = false; 
for (int i = 0; i < AppleList.size(); i++) { 
    if (!AppleList.get(i).slotted) { 
    foundNonSlotted = true; 
    break; 
    } 
} 

if (foundNonSlotted) { 
    //EXECUTE CODE 
} 
+0

少なくとも1つの要素がスロットされている場合はコードを実行しますが、スライドする必要があります: "Arraylistの項目のうち、NONEに 'slotted'属性がfalseに設定されていればコードを実行します。 – paislee

+0

あなたは正しいサンプルです –

3

あなたのコード内のエラーがいくつかあります。まず行方不明}、第二:あなたの質問について

AppleList.get(i).slotted = true 
//      ^should be == 

:配列リスト内の項目のどれも属性をfalseに設定「スロットない」している場合

は、コードを実行します。

または、すべての要素はスロットに入れなければなりません。私あなたの場合は

label: 
{ 
    for(Foo f : AppleList) if(!f.slotted) break label; 

    // Here you guaranteed that all slotted fields are true 
} 
+0

@downvoter – paislee

1

boolean allSloted = true; 

// VVVVV or appropriate type 
for (Apple a : AppleList) { 
    if (!a.slotted) { 
     allSloted = false; 
     break; 
    } 
} 

if (allSloted) { 
    // EXECUTE CODE 
} 
+0

"ArraylistのアイテムのうちNONEに属性 'slotted'がfalseに設定されていると、コードを実行します。 AppleList.get(i)の代わりに – paislee

+0

を返します.slotted == true AppleList.get(i).slotted == false;私の考え方を理解するだけです。あなたの状態が最初に失敗した場合、あなたは配列全体のサイズを完了する必要はありません。 –

+0

コードの実行条件を元に戻す必要があります。現在のところ、スロットが見つからない場合は実行されますが、OPはすべてのスロットがある場合にのみコードを実行します。 – paislee

関連する問題