Java for循环迭代

tom*_*tom 0 java collections for-loop if-statement java-ee

在我的应用程序中,我有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";
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ale*_* C. 5

你必须打破,当你发现你的满足条件的一个值循环,否则enableLink将是"true"唯一的,如果你的列表的最后一个元素是等于"AAA"你的情况.

您还应该查看该contains方法.


Joh*_*ica 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于它的价值,你不需要一个显式的循环.你可以写:

boolean enableLink = roleNames.contains("AAA");
Run Code Online (Sandbox Code Playgroud)