检查一个字符串是否在一个字符串列表中的方法

68

如何检查一个 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呢?为什么要使用Integer对象而不是int?如果你改变我说的内容,解决方案看起来已经足够好了。 - tskulbru
你已经写出了一个可行的解决方案,只是缺少 else 语句。此外,请注意比较字符串是区分大小写的,如果你没有正确地使其工作可能会有问题。另外,使用建议的 contains 方法也是另一种有效的方法。 - John Snow
@JimmyGustafsson:是的,伙计,我就是在做那个,但是我有点困惑了...不管怎样,谢谢。 - abhi
4个回答

97
temp = bankAccNos.contains(no) ? 1 : 2;

9
List.contains()方法检查的是对象的身份标识,而不是相等性。对于整数来说,它能够很好地工作,但对于字符串(这是 OP 所询问的)来说却不行。遍历列表或更好的方法是使用 Java8 List stream 来处理 List<String> - Michal
33
根据文档: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))。” - jazzytomato

16

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

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

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


3
List.contains() 方法检查的是对象的身份标识,而不是相等性。这对于整数很有效,但对于字符串(这是 OP 所要求的)则不太适用。遍历列表,或更好的方法是使用 Java8 的列表流,来处理 List<String> 类型的数据。 - Michal
4
@Michal 这不正确,因为文件说明是这样说的(而且我刚刚测试过)。点击我的回答中的链接并自行阅读。 - Angelo Fuchs
2
更正式地说,仅当此列表包含至少一个元素e使得(o==null ? e==null : o.equals (e))时,返回true。因此,这是相等性而不是身份比较。 - Michael Laffargue

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));

输出结果为:
two
five

0
*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 中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接