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

时间:2011-07-07 08:37:07

标签: java

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

6 个答案:

答案 0 :(得分:18)

使用

ArrayList.contains("StringToBeChecked");

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

答案 1 :(得分:7)

这是你的方法:

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:3)

您可以考虑不同的选项:

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

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

此致  斯特凡

答案 4 :(得分:3)

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

答案 5 :(得分:2)

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

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

使用selectequalTo的静态导入可提高可读性:

select(listOfStrings, equalTo(testString));