Java:不要用 Arrays.binarySearch 去判断 String 字符串数组中是否包含某元素

此文章发布于 70 个月前,部分信息可能已经过时,请自行斟酌确认。

今天微酷确实又在这里踩坑了,真的好臭,花了1个多小时没写完一个上传处理逻辑。

问题描述

定义了一个字符串用于设定允许上传的文件类型:

String uploadType=".jpg|.jpeg|.png|.doc|.docx|.xls|.xlsx|.pdf";

结果判断上传文件的扩展名是否允许时遇到坑了。
下面的代码是错的,是错的,是错的!!!

Arrays.binarySearch(uploadType.split("\\|")), ".jpg");

得到的结果竟然是:-6

不想多吐槽,还是那个字,Java 不如 C# 好用。

解决方案

方法一:

result = Arrays.asList(arr).contains(str);

方法二:

for (String s : arr) {
    if (s.equals(str)){
        return true;
    }
}

方法三:

Set<String> set=new HashSet<String>(Arrays.asList(arr));
return set.contains(str);

方法四:

ArrayUtils.contains(arr,str);

如果非要用

        String[] arr = ".jpg|.jpeg|.png|.doc|.docx|.xls|.xlsx|.pdf".split("\\|");
        Arrays.sort(arr);
        int i = Arrays.binarySearch(arr, ".jpg");
        System.out.println(i); // 输出3
最后修改:2019 年 05 月 13 日 08 : 03 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论