java 中 Arrays.binarySearch 是不是不能检查 String[]

需求

我想在一个字符串String数组中检查是否存在某元素String,找到有个方法是:Arrays.binarySearch

问题

写完代码后发现答案是错的,如下代码:

String[] arr = ".jpg|.jpeg|.png|.doc|.docx|.xls|.xlsx|.pdf".split("\\|");
int i = Arrays.binarySearch(arr, ".jpg");

期待得到的结果应该是0,结果却是-6

为什么会这样?

我搜过几个帖子,都说这方法需要将数组排序,网上的例子也都是 int 数组,而非String

刚从 C# 转 java 痛苦啊,真的不如 C# 甜~

阅读 3.2k
1 个回答

没毛病啊

        String[] arr = ".jpg|.jpeg|.png|.doc|.docx|.xls|.xlsx|.pdf".split("\\|");
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        int i = Arrays.binarySearch(arr, ".jpg");
        System.out.println(i);
        

输出:
[.doc, .docx, .jpeg, .jpg, .pdf, .png, .xls, .xlsx]
3

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题