String a = "r"; String b = "l"; for (String s : list) { boolean r = s.indexOf(a) >= 0; boolean l = s.indexOf(b) >= 0; //返回指定字符在此字符串中第一次出现处的索引。 if (r && !l) continue; if (!r && l) result.add(s); result.add(s); } boolean l = s.indexOf(b) >= 0; 这里的 >= 0 是不是因为 数组的下标不能小于0? if (r && !l) continue; if (!r && l) result.add(s); 这里面的条件 为什么要取反呀 ??