【问题标题】:ArrayList not contains stringArrayList 不包含字符串
【发布时间】:2016-05-13 22:41:58
【问题描述】:

我有以下代码:

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 语句是truearrlist 填充st 任何帮助将不胜感激:) 对不起,如果我犯了一个严重的错误,我很新。

【问题讨论】:

  • @Shark 请重新考虑您的评论。你的“那基本上”是错误的。
  • @manu arrlist 包含15。它确实包含一个字符串,而该字符串又包含15
  • 顺便说一句,您缺少前两行中的分号和条件末尾的一个括号。
  • arrlist.contains(sta) 将检查列表 arrlist 是否完全包含您使用 equals 实现传入的对象。您的列表不包含 "15" (它有一个包含该子字符串的字符串,但这在这里无关紧要)因此它返回 false 并且由于您使用 ! 反转该布尔值,您将得到 @改为 987654336@。
  • @manu 遍历它,检查每个元素是否.contains()。最好把它放在一个函数中。

标签: java string arraylist contains


【解决方案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);                      
    }
}

【讨论】:

    【解决方案2】:
    if (st.contains(sta) && !arrlist.contains(sta)) 
    

    将是true,因为1 &amp; 1 始终是1Boolean algebra:

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

    st 是一个 String,它包含导致 truearrlist 不包含 sta 的子字符串“15”,因此 !arrlist.contains(sta) 也返回 true

    因此,整个条件为真。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-18
      • 2019-03-03
      • 2017-08-29
      • 2016-03-25
      • 2013-02-05
      • 2016-08-12
      • 2014-04-17
      • 1970-01-01
      相关资源
      最近更新 更多