gpt4 book ai didi

java Arrays.binarySearch() 在不区分大小写的搜索中无法找到字符串

转载 作者:行者123 更新时间:2023-12-02 03:27:43 24 4
gpt4 key购买 nike

我正在尝试使用 java.util.Arrays 类的二分搜索(不区分大小写),但它无法搜索指定数组中存在的字符串。以下是程序:

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"---> 输出 = 未找到
  • searchString = "america/los_angeles"---> 输出 = 找到:America/Los_Angeles

如果我从binarySearch参数中删除String.CASE_INSENSITIVE_ORDER参数,那么也会找到UTC。我在这里缺少什么?我需要对此数组进行不区分大小写的搜索。

提前致谢!

最佳答案

Arrays.binarySearch() 在 JavaDoc 中指出,如果数组不按升序排列,则结果未定义。问题是您使用与传递给 binarySearch 方法不同的 比较器 对数组进行排序。所以你的结果是未定义的......在这种情况下找不到。

将比较器传递给数组排序

Arrays.sort(arr, String.CASE_INSENSITIVE_ORDER);

它将按预期工作。

关于java Arrays.binarySearch() 在不区分大小写的搜索中无法找到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38586527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com