检查String是否在字符串的ArrayList中

abh*_*bhi 41 java string list arraylist

我怎样才能检查a中String是否有List

我想分配1temp如果有结果,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;
Run Code Online (Sandbox Code Playgroud)

jaz*_*ato 65

temp = bankAccNos.contains(no) ? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

  • @Michal文档另有说明https://docs.oracle.com/javase/8/docs/api/java/util/List.html#contains-java.lang.Object-它检查是否相等,而不是标识:"返回当且仅当此列表包含至少一个元素e时才返回true,以便`(o == null?e == null:o.equals(e))`" (11认同)
  • 你是对的。感谢您纠正我。 (3认同)
  • List.contains()方法检查身份,而不是相等性。它适用于整数,但不适用于字符串(这是OP要求的)。使用Java8 List流遍历列表,或者更好,是使用List &lt;String&gt;的方法。 (2认同)

Ang*_*chs 12

List界面已经有了这个解决.

int temp = 2;
if(bankAccNos.contains(bakAccNo)) temp=1;
Run Code Online (Sandbox Code Playgroud)

有关List的文档中可以找到更多内容.

  • `List.contains()` 方法检查身份,而不是相等。它适用于整数但不适用于字符串(这是 OP 要求的)。迭代列表,或者更好的是,使用 Java8 List 流是获取 `List&lt;String&gt;` 的方法 (3认同)
  • @Michal 不正确,因为文档另有说明(我刚刚测试过)。点击我的答案中的链接并自己阅读。 (2认同)
  • `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)).` So it's equality not identity. (2认同)

小智 7

    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));
Run Code Online (Sandbox Code Playgroud)

输出是:

two
five
Run Code Online (Sandbox Code Playgroud)