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

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

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

  • 你到底想要什么? 您不能将StringArrayList进行比较。 保持精确,并显示到目前为止的工作。
  • 你是什么意思"比较"? 您的意思是检查ArrayList是否包含特定的String吗?
  • 是的,我想检查一种情况,它是否存在于ArrayList中? 在java中


1
ArrayList.contains("StringToBeChecked");

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

  • 只是对大写字母A感到好奇-ArrayList.contains("StringToBeChecked");中的第一个字母
  • 我没有给出变量的确切名称。 进一步了解可以做什么。 在实际情况下,请使用ArrayList类型的变量而不是ArrayList
  • ArrayListArrayList之间有区别吗?


这是您的方法:

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

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

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

  • Arrays.asList(" abc"," xyz")。contains(" abc");


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

1
2
3
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实现以上
  • 在列表中的每个项目和字符串A上使用intern方法将alls字符串放入内部字符串池。这将允许使用==比较字符串,并且不再等于。这样比较就会快得多。
  • 使用哈希图实现更好的比较速度
  • 身份哈希图以混合前面的两种策略。

好吧,这些方法的优缺点,都取决于您要执行的操作以及为什么以及如何比较字符串。

问候,
斯特凡


如果您愿意使用Lambdaj,请按以下方式检查String的存在:

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

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

1
select(listOfStrings, equalTo(testString));