检查字符串是不是在字符串的 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<String>
@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<String>
的方法
@Michal 文档另有说明 docs.oracle.com/javase/8/docs/api/java/util/… 它检查相等性,而不是身份:" 当且仅当此列表包含至少一个元素 e 使得 (o==null ? e==null : o.equals(e))
"以上是关于检查字符串是不是在字符串的 ArrayList 中的主要内容,如果未能解决你的问题,请参考以下文章
Java - 检查字符串的 ArrayList 是不是按字母顺序排列