计算Arraylist中具有特定属性的项目

时间:2012-03-05 18:41:55

标签: java android if-statement arraylist

如果Arraylist中的NONE项将属性'slotted'设置为false,我想执行代码。我使用以下代码:

int p=0;

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

if (p == 0){

    //EXECUTE CODE

}

有没有办法更好地做到这一点?

4 个答案:

答案 0 :(得分:5)

您可以使用增强型for循环和标签来执行此操作:

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

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

答案 1 :(得分:3)

您的代码中存在一些错误。首先缺少},第二个:

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

关于您的问题:

  

如果Arraylist中没有任何项目的属性'slotted'设置为false,则执行代码。

或者,所有元素必须插入。因此,如果任何元素的slotted设置为false,请不要执行代码:

boolean allSloted = true;

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

if (allSloted) {
    // EXECUTE CODE
}

答案 2 :(得分: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
}

答案 3 :(得分:1)

如果我在哪里,我会像这样做

boolean flag=true;

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

这里性能可能不同,因为大(O)可能相等(1)“我的意思是如果arraylist中的第一项等于true那么你需要做你的代码,你不必完成循环就可以了等于arraylist大小“

相关问题