如果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
}
有没有办法更好地做到这一点?
答案 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大小“