Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组包含()不区分大小写的查找?_Java_Arrays - Fatal编程技术网

Java 数组包含()不区分大小写的查找?

Java 数组包含()不区分大小写的查找?,java,arrays,Java,Arrays,我能告诉array.contains()方法不要使查找区分大小写吗 List<String> data = Arrays.asList( "one", Two", "tHRee"); //lots of entries (100+) data.contains("three"); List data=Arrays.asList( “一”、“二”、“三”);//大量条目(100+) 数据。包含(“三”); 包含只需检查列表中是否存在对象。因此不能在此处进行不区分大小写的查找,因

我能告诉array.contains()方法不要使查找区分大小写吗

List<String> data = Arrays.asList(
  "one", Two", "tHRee"); //lots of entries (100+)

data.contains("three");
List data=Arrays.asList(
“一”、“二”、“三”);//大量条目(100+)
数据。包含(“三”);

包含
只需检查列表中是否存在对象。因此不能在此处进行不区分大小写的查找,因为“三”与“三”是不同的对象

解决这个问题的一个简单方法是

public boolean containsCaseInsensitive(String s, List<String> l){
     for (String string : l){
        if (string.equalsIgnoreCase(s)){
            return true;
         }
     }
    return false;
  }
Java 8+版本:

public boolean containsCaseInsensitive(String s, List<String> l){
        return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
    }
public boolean containsCaseSensitive(字符串s,列表l){
返回l.stream().anyMatch(x->x.equalsIgnoreCase);
}

它将要求您编写自己的
contains()
方法。 自定义
包含的指针()

  • 迭代列表中的所有元素
  • 将参数字符串与中的所有值进行比较
  • 要使比较不区分大小写,请确保在参数和当前元素上都应用toLowerCase或toUpperCase中的任意一个

    名单; 公共布尔包含(字符串str){


    for(inti=0;我猜您的意思是
    List.contains()
    在插入
    数据之前和查找之前,将所有内容转换为小写?@yaens这是.Net而不是Java。重复的是.Net而不是Java。停止投票:xit不是重复的。谁应该解决这个问题?@membersound-你是如何在这种情况下使用equalsIgnoreCase的?@kishanlanki-我很确定它可以工作。什么对你不起作用r您?不是一个有效的答案。您正在将
    str
    转换为小写N次(对于
    列表的每个元素一次),每次调用此方法时,您都会将
    列表
    中的每一项转换为小写。如果您在编写自己的方法时遇到麻烦,只需使用
    equalsIgnoreCase
    并跳过所有分配。
    public boolean containsCaseInsensitive(String s, List<String> l){
            return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
        }
    
       for(int i=0;i<list.size();i++){
           if(list.elementAt(i).toLowerCase().Equals(str.toLowerCase())) return true;
       }
    return false;
    }