在不区分大小写的情况下,如何使用.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)
您需要遍历列表并检查每个元素。这就是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)
如果您使用的是 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)
| 归档时间: |
|
| 查看次数: |
10213 次 |
| 最近记录: |