检查字符串是不是在字符串的 ArrayList 中

Posted

技术标签:

【中文标题】检查字符串是不是在字符串的 ArrayList 中【英文标题】:Check if a String is in an ArrayList of Strings检查字符串是否在字符串的 ArrayList 中 【发布时间】:2012-04-29 19:44:15 【问题描述】:

如何检查String 是否存在于List 中?

如果有结果,我想将1 分配给temp,否则分配2

我当前的代码是:

Integer temp = 0;
List<String> bankAccNos = new ArrayList<String>();//assume list contains values
String bankAccNo = "abc";
for(String no : bankAccNos)
    if(no.equals(bankAccNo))
        temp = 1;

【问题讨论】:

为什么不一开始就设置 temp 为 2?为什么使用 object Integer 而不是 int?如果你改变我所说的,解决方案看起来就足够了 您所写的已经是一个可行的解决方案,只是您缺少 else 语句。另请注意,比较字符串是区分大小写的,如果您没有让它正常工作,这可能是一个问题。此外,使用建议的包含是另一种有效的方法 @JimmyGustafsson :是的,我只是这样做,但我很困惑......无论如何,谢谢 【参考方案1】:
*public class Demo 
   public static void main(String[] args) 
      List aList = new ArrayList();
      aList.add("A");
      aList.add("B");
      aList.add("C");
      aList.add("D");
      aList.add("E");
      if(aList.contains("C"))
         System.out.println("The element C is available in the ArrayList");
      else
         System.out.println("The element C is not available in the ArrayList");
      if(aList.contains("H"))
         System.out.println("The element H is available in the ArrayList");
      else
         System.out.println("The element H is not available in the ArrayList");
   
*

输出将是:

元素 C 在 ArrayList 中可用 元素 H 不可用 在 ArrayList 中可用

【讨论】:

【参考方案2】:
    List list1 = new ArrayList();
    list1.add("one");
    list1.add("three");
    list1.add("four");

    List list2 = new ArrayList();
    list2.add("one");
    list2.add("two");
    list2.add("three");
    list2.add("four");
    list2.add("five");


    list2.stream().filter( x -> !list1.contains(x) ).forEach(x -> System.out.println(x));

输出是:

two
five

【讨论】:

【参考方案3】:

List 接口已经解决了这个问题。

int temp = 2;
if(bankAccNos.contains(bakAccNo)) temp=1;

更多信息可以在List的文档中找到。

【讨论】:

List.contains() 方法检查身份,而不是相等。它适用于整数,但不适用于字符串(这是 OP 要求的)。遍历列表,或者更好的是,使用 Java8 列表流是 List&lt;String&gt; @Michal 并非如此,因为文档另有说明(我刚刚测试过)。点击我的答案中的链接并自己阅读。 More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)). 所以这是平等而不是身份。【参考方案4】:
temp = bankAccNos.contains(no) ? 1 : 2;

【讨论】:

List.contains() 方法检查身份,而不是相等。它适用于整数,但不适用于字符串(这是 OP 要求的)。迭代列表,或者更好的是,使用 Java8 列表流是 List&lt;String&gt; 的方法 @Michal 文档另有说明 docs.oracle.com/javase/8/docs/api/java/util/… 它检查相等性,而不是身份:" 当且仅当此列表包含至少一个元素 e 使得 (o==null ? e==null : o.equals(e))"

以上是关于检查字符串是不是在字符串的 ArrayList 中的主要内容,如果未能解决你的问题,请参考以下文章

Java - 检查字符串的 ArrayList 是不是按字母顺序排列

如何检查arraylist是不是包含字符串

如何检查arraylist中的数组是不是包含某个值?

如何检查字符串是不是包含字母表中的所有字母? [复制]

java怎么检查句子里的一个词是不是包含在arraylist里

Arraylist.contains 不会检查字符串