繁体   English   中英

如何将字符串值与 Java 中字符串类型的 ArrayList 进行比较?

[英]How can I compare String value with ArrayList of String type in Java?

我的要求是将String与包含字符串列表的ArrayList进行比较。 任何人都可以建议我吗?

利用

ArrayList.contains("StringToBeChecked");

如果字符串存在于 ArrayList 中,则此 function 将返回 true,否则将返回 false。

这是你的方法:

   private boolean containsString(String testString, ArrayList<String> list) 
   {
        return list.contains(testString);
   }

查看List#contains(T obj)方法,如下所示:

List<String> list = new ArrayList<String>();
list.add("abc");
list.add("xyz");
list.contains("abc"); // true
list.contains("foo"); // false

您可以考虑不同的选择:

  • 一个简单的 for each 循环,在列表的每个成员上使用 equals 将其与字符串 A 进行比较。
  • 排序列表中的所有字符串以增强比较并查找列表中的字符串是否与 A 匹配。
  • 使用一个 sortedSet 来实现上述
  • 对列表中的每个项目和字符串 A 使用 intern 方法将所有字符串放入实习生字符串池中。这将允许使用 == 比较字符串并且不再相等。 比较会快得多。
  • 使用 hashmap 以获得更好的比较速度
  • 一个身份 hashmap 混合上述两种策略。

好吧,这些方法各有利弊,这完全取决于您想要做什么以及为什么以及如何比较字符串。

问候, 斯蒂芬

ArrayList 可以包含一个或多个字符串。 您无法将 String 与 ArrayList 进行比较。 但是您可以检查 ArrayList 是否包含该字符串而不是使用contains()方法

String str = //the string which you want to compare
ArrayList myArray =// my array list
boolean isStringExists = myArray.contains(str);// returns true if the array list contains string value as specified by user

如果您愿意使用Lambdaj ,请检查字符串是否存在:

private boolean isContains(ArrayList<String> listOfStrings, String testString) {
    return (Lambda.select(listOfStrings, Matchers.equalTo(testString)).size() != 0);  
}

使用 static 导入selectequalTo增加可读性:

select(listOfStrings, equalTo(testString));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM