【问题标题】:Check if a String is in an ArrayList of Strings检查字符串是否在字符串的 ArrayList 中
【发布时间】:2023-04-07 21:08:01
【问题描述】:

如何检查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 :是的,我只是这样做,但我很困惑......无论如何,谢谢

标签: java string list arraylist


【解决方案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))"
      猜你喜欢
      • 2018-12-16
      • 2019-03-03
      • 2013-01-09
      • 2017-08-29
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 2016-03-25
      相关资源
      最近更新 更多