Java for循环迭代

时间:2014-01-14 17:05:17

标签: java java-ee if-statement for-loop collections

在我的应用程序中,我有String类型的值列表,我正在迭代它并将每个值的值与另一个字符串进行比较,如果为true则返回true值,否则为false。

List<String> roleNames = new ArrayList<String>();
roleNames.add("AAA");
roleNames.add("MMM");
for (int i=0 ; i<roleNames.size();i++){
//  if(loggedInRole.equals(roleNames.get(i))){
    if("AAA".equals(roleNames.get(i))){
        enableLink = "true";
    }
    else {
        enableLink = "false";
    }
}

在上面的代码中,我希望结果为true,但在第二次迭代中,它将结果返回为false。如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

当您找到一个满足条件的值时,您必须打破循环,否则只有当您的列表中的最后一个元素等于enableLink时,"true"才会"AAA"情况下。

您还应该查看contains方法。

答案 1 :(得分:5)

找到匹配项时添加break语句。如果你没有突破循环,那么当迭代enableLink时,下一次迭代会将"false"设置回"MMM"

此外,您应该在开始循环之前将enableLink设置为"false"。标准的“搜索数组”循环如下所示:

enableLink = "false";

for (int i = 0; i < roleNames.size(); i++) {
    if ("AAA".equals(roleNames.get(i))) {
        enableLink = "true";
        break;
    }
}

对于它的价值,您不需要显式循环。你可以写:

boolean enableLink = roleNames.contains("AAA");