如何在Java中将String值与String类型的ArrayList进行比较?

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

使用

 ArrayList.contains("StringToBeChecked"); 

如果String存在于ArrayList中,则此函数将返回true,否则将返回false。

这是你的方法:

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

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

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

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

 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 

您可以考虑不同的选项:

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

那么,这些方法的优点和缺点,都取决于你想做什么以及为什么以及如何比较字符串。

此致,Stéphane

如果您愿意使用Lambdaj ,请检查String的存在,如下所示:

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

使用selectequalTo静态导入来增加可读性:

 select(listOfStrings, equalTo(testString));