在不区分大小写的情况下检查ArrayList是否包含某个String

Rag*_*sen 5 java arraylist

在不区分大小写的情况下,如何使用.contains方法搜索ArrayList?我试过了.containsIgnoreCase,但是发现IgnoreCase方法仅适用于字符串。

这是我尝试创建的方法:

 private ArrayList<String> Ord = new ArrayList<String>(); 

 public void leggTilOrd(String ord){
     if (!Ord.contains(ord)){
         Ord.add(ord);
     }
 }
Run Code Online (Sandbox Code Playgroud)

Aar*_*vis 7

您需要遍历列表并检查每个元素。这就是contains方法中发生的事情。由于您想要使用该equalsIgnoreCase方法而不是equals您正在检查的 String 元素的方法,因此您需要明确地执行此操作。这可以使用 for-each 循环或使用 Stream(下面的示例是使用 Stream)。

private final List<String> list = new ArrayList<>();

public void addIfNotPresent(String str) {
    if (list.stream().noneMatch(s -> s.equalsIgnoreCase(str))) {
        list.add(str);
    }
}
Run Code Online (Sandbox Code Playgroud)


Kri*_*ris 6

如果您使用的是 Java7,只需覆盖 contains() 方法,

public class CastInsensitiveList extends ArrayList<String> {
    @Override
    public boolean contains(Object obj) {
        String object = (String)obj;
        for (String string : this) {
            if (object.equalsIgnoreCase(string)) {
              return true;
            }
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Java 8.0,使用流式 API,

List<String> arrayList = new ArrayList<>();
arrayList.stream().anyMatch(string::equalsIgnoreCase);
Run Code Online (Sandbox Code Playgroud)