在我的应用程序中,我有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。如何解决这个问题?
答案 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");