在Java ArrayList <String>中使用contains

Mr *_*gan 41 java arraylist

如果我有一个String的ArrayList形成Java中的类的一部分,如下所示:

private ArrayList<String> rssFeedURLs;

如果我想在包含上述的ArrayList类的使用方法,使用ArrayList包含检查,如果一个字符串包含在此ArrayList,我相信我应该能够做到这一点,如下所示:

if (this.rssFeedURLs.contains(rssFeedURL)) {
Run Code Online (Sandbox Code Playgroud)

其中rssFeedURL是一个String.

我是对还是错?

And*_*mas 66

你是对的.ArrayList.contains()测试equals(),而不是对象标识:

当且仅当此列表包含至少一个元素e时才返回true(o == null?e == null:o.equals(e))

如果您收到NullPointerException,请验证是否在构造函数或声明中初始化了列表.例如:

private List<String> rssFeedURLs = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)


wil*_*ood 17

是的,这应该适用于字符串,但如果你担心重复使用一个Set.此集合可防止重复,无需您执行任何操作.A HashSet可以使用,但它是无序的,所以如果你想保留插入顺序,你可以使用a LinkedHashSet.


Aar*_*ver 0

对...对于字符串...当您偏离原语或字符串时,事情就会发生变化,您需要实现 hashcode/equals 才能获得所需的效果。

编辑:初始化ArrayList<String>然后尝试添加项目。