我目前正在使用属于ArrayList类的contains方法进行搜索.有没有办法让这个搜索案例在java中不敏感?我发现在C#中可以使用OrdinalIgnoreCase.有没有Java等价物,或其他方式来做到这一点?谢谢.
Aar*_*ang 65
您可以像使用任何其他ArrayList一样使用它.您可以将此List传递给其他代码,外部代码不必理解任何字符串包装类.
public class CustomStringList3 extends ArrayList<String> {
@Override
public boolean contains(Object o) {
String paramStr = (String)o;
for (String s : this) {
if (paramStr.equalsIgnoreCase(s)) return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
Fre*_*ded 38
在Java8中,使用anyMatch
List<String> list = Arrays.asList("XYZ", "ABC");
String matchingText = "xYz";
boolean isMatched = list.stream().anyMatch(matchingText::equalsIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
Jos*_*h M 34
如果您使用的是Java 8,请尝试:
List<String> list = ...;
String searchStr = ...;
boolean containsSearchStr = list.stream().filter(s -> s.equalsIgnoreCase(searchStr)).findFirst().isPresent();
Run Code Online (Sandbox Code Playgroud)
Lio*_*ion 14
传统上,您可以开发自己的逻辑来比较一个字符串ArrayList.可能有几种方法可以这样做,如下所示.
public boolean containsCaseInsensitive(String strToCompare, ArrayList<String>list)
{
for(String str:list)
{
if(str.equalsIgnoreCase(strToCompare))
{
return(true);
}
}
return(false);
}
Run Code Online (Sandbox Code Playgroud)
为什么不应该使用一些直接和方便的方法,如下面所示的SortedSet和不区分大小写的比较器?
Set<String> a = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
a.add("A");
a.add("B");
a.add("C");
Set<String> b = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
b.add("a");
b.add("b");
b.add("c");
System.out.println(b.equals(a));
Run Code Online (Sandbox Code Playgroud)
比较两个不同的集合忽略案例和返回true,在这种特殊情况下,你的比较将没有任何问题.
小智 9
查看Java API,没有包含此类方法.
但你至少可以做两件事:
编写自己的contains方法,该方法应遍历您的ArrayList实体,并进行手动检查.
ArrayList<String> list = new ArrayList<String>();
...
containsIgnoreCase("a", list);
public boolean containsIgnoreCase(String str, ArrayList<String> list){
for(String i : list){
if(i.equalsIgnoreCase(str))
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)假设你有一个 ArrayList<String>
关于我能想到的唯一方法是在String周围创建一个非常轻的包装类,并覆盖equals和hashcode以忽略大小写,equalsIgnoreCase()尽可能利用它.然后你会有一个ArrayList<YourString>.虽然这有点丑陋.
| 归档时间: |
|
| 查看次数: |
84530 次 |
| 最近记录: |