我试图使用java.util.Arrays类的二进制搜索(不区分大小写),但它无法搜索存在于数组指定。 下面是该程序:java Arrays.binarySearch()无法在不区分大小写的搜索中找到字符串
package com.test;
import java.util.Arrays;
import java.util.TimeZone;
public class TestArrayBinSearch {
public static void main(String[] args) {
String arr[] = TimeZone.getAvailableIDs();
Arrays.sort(arr);
String searchString = "UTC";
int index = Arrays.binarySearch(arr, searchString, String.CASE_INSENSITIVE_ORDER);
if(index >= 0)
System.out.println("Found: " + arr[index]);
else
System.out.println("Not Found");
}
}
下面是基于搜索字符串的不同值的输出:
- searchString的= “UTC” --->输出=未找到
- 搜索字符串=“美国/洛杉矶“---> output = Found:America/Los_Angeles
如果我从binarySearch参数中删除String.CASE_INSENSITIVE_ORDER参数,则UT C也被发现。 我在这里错过了什么?我需要对这个数组进行不区分大小写的搜索。
在此先感谢!
“TimeZone.getAvailableIDs”中的值的大小顺序可能区分大小写,而不是大小写不敏感的顺序,所以它不能以这种方式找到它。 –