Arrays.binarySearch 不能查找字符串吗?

ink_s 2020-09-17 03:50:47

public class BinarySearchTest {

public static String[] deviceIds = {
"44:EF:BF:5F:84:0E",
"38:01:46:4F:F7:18",
"CC:79:CF:A7:8B:15",
"6C:21:A2:E1:E6:5D",
"6C:21:A2:E1:E6:82",
"6C:21:A2:E1:D9:C9",
"6C:21:A2:E1:E0:11"};
public static void main(String[] args) {

for (String deviceId : deviceIds) {
System.out.println("binarySearch:" + Arrays.binarySearch(deviceIds, deviceId));
}
}

}




输出结果:
> Task :JavaTest:BinarySearchTest.main()
binarySearch:-3
binarySearch:1
binarySearch:-8
binarySearch:3
binarySearch:-8
binarySearch:-3
binarySearch:-3




...全文
21506 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
TangHaiYin 2020-09-21
  • 打赏
  • 举报
回复
这个方法有个前提,需要对数组进行排序后才能正常返回索引值 Arrays.sort是默认的排序方法
public static String[] deviceIds = {
            "44:EF:BF:5F:84:0E",
            "38:01:46:4F:F7:18",
            "CC:79:CF:A7:8B:15",
            "6C:21:A2:E1:E6:5D",
            "6C:21:A2:E1:E6:82",
            "6C:21:A2:E1:D9:C9",
            "6C:21:A2:E1:E0:11"};
    public static void main(String[] args) {
        Arrays.sort(deviceIds);
        for (String deviceId : deviceIds) {
            System.out.println("binarySearch:" + Arrays.binarySearch(deviceIds, deviceId));
            System.out.println(deviceId);
        }
    }
TangHaiYin 2020-09-21
  • 打赏
  • 举报
回复
引用 3 楼 ink_s 的回复:
[quote=引用 2 楼 TangHaiYin 的回复:]这个方法有个前提,需要对数组进行排序后才能正常返回索引值 Arrays.sort是默认的排序方法
public static String[] deviceIds = {
            "44:EF:BF:5F:84:0E",
            "38:01:46:4F:F7:18",
            "CC:79:CF:A7:8B:15",
            "6C:21:A2:E1:E6:5D",
            "6C:21:A2:E1:E6:82",
            "6C:21:A2:E1:D9:C9",
            "6C:21:A2:E1:E0:11"};
    public static void main(String[] args) {
        Arrays.sort(deviceIds);
        for (String deviceId : deviceIds) {
            System.out.println("binarySearch:" + Arrays.binarySearch(deviceIds, deviceId));
            System.out.println(deviceId);
        }
    }
OK,不知道它字符串是按什么原理排序的。。。[/quote] 你不想用默认的可以自己定义排序,这个网上很多例子,我就不举例了
TangHaiYin 2020-09-21
  • 打赏
  • 举报
回复
引用 3 楼 ink_s 的回复:
[quote=引用 2 楼 TangHaiYin 的回复:]这个方法有个前提,需要对数组进行排序后才能正常返回索引值 Arrays.sort是默认的排序方法
public static String[] deviceIds = {
            "44:EF:BF:5F:84:0E",
            "38:01:46:4F:F7:18",
            "CC:79:CF:A7:8B:15",
            "6C:21:A2:E1:E6:5D",
            "6C:21:A2:E1:E6:82",
            "6C:21:A2:E1:D9:C9",
            "6C:21:A2:E1:E0:11"};
    public static void main(String[] args) {
        Arrays.sort(deviceIds);
        for (String deviceId : deviceIds) {
            System.out.println("binarySearch:" + Arrays.binarySearch(deviceIds, deviceId));
            System.out.println(deviceId);
        }
    }
OK,不知道它字符串是按什么原理排序的。。。[/quote] 估计是多种排序算法结合,根据你数组的结构是否有某种规则来推算排序
ink_s 2020-09-21
  • 打赏
  • 举报
回复
引用 2 楼 TangHaiYin 的回复:
这个方法有个前提,需要对数组进行排序后才能正常返回索引值 Arrays.sort是默认的排序方法
public static String[] deviceIds = {
            "44:EF:BF:5F:84:0E",
            "38:01:46:4F:F7:18",
            "CC:79:CF:A7:8B:15",
            "6C:21:A2:E1:E6:5D",
            "6C:21:A2:E1:E6:82",
            "6C:21:A2:E1:D9:C9",
            "6C:21:A2:E1:E0:11"};
    public static void main(String[] args) {
        Arrays.sort(deviceIds);
        for (String deviceId : deviceIds) {
            System.out.println("binarySearch:" + Arrays.binarySearch(deviceIds, deviceId));
            System.out.println(deviceId);
        }
    }
OK,不知道它字符串是按什么原理排序的。。。
立青_ 中级 2020-09-17
  • 打赏
  • 举报
回复
Arrays.binarySearch()使用的前提是数组是有序的。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧