JAVA——Arrays类常用方法详解


初始化:

int[] a = {3,4,1,2,77,5,-6,33213};
int[] a2 = {3,4,1,2,77,5,-6,33213};
int[] a3 = {1,3,4,6,8,9};
int[] b = {1,2,3};

System.out.println("数组a地址:");
System.out.println(a); // [I@1b6d3586

// 数组打印
System.out.println("数组a元素:");
System.out.println(Arrays.toString(a)); // [3, 4, 1, 2, 77, 5, -6, 33213]

数组排序——sort方法

Arrays.sort(arrayName[ ]);

具体代码如下:

// 数组排序sort方法:对数组进行永久性排序
 Arrays.sort(a);
 System.out.println("数组a排序后:");
 System.out.println(Arrays.toString(a)); // [-6, 1, 2, 3, 4, 5, 77, 33213]

sort方法默认为正序排列

数组填充——fill方法

Arrays.fill(arrayName[ ], value);

具体代码如下:

// fill填充数组
 System.out.println("fill填充:");
 Arrays.fill(a2,6666);
 Arrays.fill(b,7777);
 System.out.println(Arrays.toString(a2)); // [6666, 6666, 6666, 6666, 6666, 6666, 6666, 6666]
 System.out.println(Arrays.toString(b)); // [7777, 7777, 7777]

从上面的输出结果可以看出,fill方法存在很大限制:只能根据数组所定义的长度使用同一个数值进行填充

数组比较——equals方法

Arrays.equals(arrayName1[ ], arrayName1[ ]);

Arrays.equals方法要求数组的个数相等,而且对应位置的元素也要相等,才会返回true,否则返回false。

具体代码如下:

// 数组比较
System.out.println(Arrays.equals(a, a2)); // 这里数组a已经被排序,所以返回false
int[] c1 = {1, 2, 3};
int[] c2 = {1, 2, 3};
System.out.println(Arrays.equals(c1, c2)); // true

其实java中equals和==的用法及细节很值得学习,这里推荐邦☆杠师傅的博文:java中equals以及==的用法

二分查找——binarySearch方法

注意:使用该方法前需要对数组进行排序

binarySearch方法可以接收一个参数或者三个参数,区别如下:

单个参数

Arrays.binarySearch(arrayName[ ], key);

具体代码如下:

System.out.println("binarySearch二分查找:");
System.out.println("-- 单个参数:");
// {1,3,4,6,8,9}
System.out.println(Arrays.binarySearch(a3,4)); // 2
System.out.println(Arrays.binarySearch(a3,5)); // -4
System.out.println(Arrays.binarySearch(a3,6)); // 3
System.out.println(Arrays.binarySearch(a3,7)); // -5
System.out.println(Arrays.binarySearch(a3,8)); // 4
System.out.println(Arrays.binarySearch(a3,9)); // 5
System.out.println(Arrays.binarySearch(a3,10)); // -7

方法binarySearch(arrayName[ ], key)的返回值规则是:当数组后只有一个参数时,key为索引键,若key在数组中,则返回数组对应的索引;若key不在数组中,binarySearch方法会返回 “-” 加 索引键插入数组的位置

从上面代码的返回值可以发现,在数组a3中:

  1. key=4时,4在数组a3元素中第3个,索引为2
  2. key=5时,5不在数组a3中,索引键插入位置为第4个
  3. key=7时,7不在数组a3中,索引键插入位置为第5个

三个参数

Arrays.binarySearch(arrayName[ ], fromIndex, toIndex, key);

三个参数代表一个[fromIndex,toIndex]的范围和一个key索引键。

  1. 当key大于toIndex对应的值,不管在不在数组内,返回toIndex对应的位置即"-" 加 (endIndex+1)

    // {1,3,4,6,8,9}
    System.out.println(Arrays.binarySearch(a3,1,3,7)); // -4
    System.out.println(Arrays.binarySearch(a3,1,2,8)); // -3
    
  2. 当key小于fromIndex对应的值,不管在不在数组内,返回fromIndex对应的位置即"-" 加 (fromIndex+1)

    // {1,3,4,6,8,9}
    System.out.println(Arrays.binarySearch(a3,2,4,1)); // -3
    System.out.println(Arrays.binarySearch(a3,3,4,1)); // -4
    System.out.println(Arrays.binarySearch(a3,3,4,0)); // -4
    
  3. 当key在对应的元素的值的范围内,并且在数组中,返回索引;不在则返回插入位置。规则类似于单个参数时的情形

    // {1,3,4,6,8,9}
    System.out.println(Arrays.binarySearch(a3,2,4,6)); // 3
    System.out.println(Arrays.binarySearch(a3,2,4,7)); // -5
    

参考博客:

JAVA之数组查询binarySearch()方法详解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TurkeyMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值