ArrayList不包含字符串

时间:2016-02-04 10:47:53

标签: java string arraylist contains

我有以下代码:

String st = "st1 15";
String sta = "15";
ArrayList<String> arrlist = new ArrayList<String>(5);
arrlist.add("string string string 15");
if (st.contains(sta) && !arrlist.contains(sta)) {
  arrlist.add(st);                      
}

我希望在我错了的情况下arrlist.add(st);不会被执行?当我执行代码if语句为true时,arrlist填充st 任何帮助将不胜感激:)抱歉如果我犯了一个严重的错误,我很新。

2 个答案:

答案 0 :(得分:2)

if (st.contains(sta) && !arrlist.contains(sta)) 

将为true,因为1 & 1始终为1Boolean algebra

a & b
0   0 = false
0   1 = false
1   0 = false
1   1 = true

st是一个String,其中包含导致true的子字符串“15”,而arrlist不包含sta所以!arrlist.contains(sta)也返回true

因此,整个条件都是正确的。

答案 1 :(得分:1)

我认为你想要做的是:

String st = "st1 15";
String sta = "15";
ArrayList<String> arrlist = new ArrayList<String>(5);
arrlist.add("string string string 15");

if (st.contains(sta)) {
    boolean shouldAdd = true;
    for ( String val : arrlist ) {
        if (val.contains(sta)) {
            shouldAdd = false;
            break;
        }
    }
    if ( shouldAdd ) {
      arrlist.add(st);                      
    }
}