java:Arrays类的几种常见用法

1.toString方法,将数组转换为字符串

public class Demo4_Array {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr= {77,22,13,46,58,26,99};
		System.out.println(Arrays.toString(arr));//将数组转换为字符串
       }
}

运行结果为:

[77, 22, 13, 46, 58, 26, 99] 

下面我们看一下Arrays类中重写的toString方法:

 public static String toString(int[] a) {
        if (a == null)//如果传入的数组为null
            return "null";//直接返回为null
        int iMax = a.length - 1;//imax是最大索引
        if (iMax == -1)//如果数组中没有元素
            return "[]";//就返回为[]

        StringBuilder b = new StringBuilder();//线程不安全,效率高
        b.append('[');//将[添加到字符串缓冲区
        for (int i = 0; ; i++) {//遍历数组,判断语句没有加默认为ture
            b.append(a[i]);//把第一个元素添加进字符串缓冲区
            if (i == iMax)//当i等于最大索引
                return b.append(']').toString();//把]添加进字符串缓冲区,然后在转换为字符串并返回
            b.append(", ");//如果if条件不满足,把,加进字符串缓冲区
        }
    }

2.排序-sort方法

import java.util.Arrays;

public class Demo4_Array {

	public static void main(String[] args) {

		Arrays.sort(arr);//快速排序
		System.out.println(Arrays.toString(arr);
		

	}

}

运行结果为:

[13, 22, 26, 46, 58, 77, 99]

 

3.二分查找-binarySearch

import java.util.Arrays;

public class Demo4_Array {

	public static void main(String[] args) {
	 
		int[] arr1= {11,22,33,44,55,66,77};
		System.out.println(Arrays.binarySearch(arr1, 22));
		System.out.println(Arrays.binarySearch(arr1, 66));
		System.out.println(Arrays.binarySearch(arr1, 88));//如果找不到该值,就返回负的插入值-1
		

	}

}

运行结果为:

1   5  -8

下面我们看一下Arrays类中的binarySearch方法:

public static int binarySearch(int[] a, int key) {
        return binarySearch0(a, 0, a.length, key);
    }




private static int binarySearch0(int[] a, int fromIndex, int toIndex,
                                     int key) {
        int low = fromIndex;//最小索引
        int high = toIndex - 1;//最大索引,数组长度-1

        while (low <= high) {//最小索引小于等于最大索引可以循环判断
            int mid = (low + high) >>> 1;//求出中间索引值,(最小+最大)/2
            int midVal = a[mid];//通过中间索引获取中间值

            if (midVal < key)//中间索引对应的值小于查找的值
                low = mid + 1;//最小索引变化
            else if (midVal > key)//中间索引对应的值大于查找的值
                high = mid - 1;//最大索引变化
            else//否则就是找到了,返回索引位置
                return mid; // key found
        }
        return -(low + 1);  // key not found.//没找到就-的插入点-1
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值