zoukankan      html  css  js  c++  java
  • Java中的Arrays类使用详解

    首先先创建一个打印数组的方法,方便后面直接使用

    public static void output(int []a) {
            for(int i=0;i<a.length;i++) {
                System.out.printf(a[i]+" ");
            }
            System.out.println();
    }

    1、填充数组:fill

    eg1.

    int []arr = new int[5];
    Arrays.fill(arr, 2);
    output(arr);

    结果是:2 2 2 2 2 
    分析:给所有值赋值2 
    eg2.

    int []arr = new int[5];
    Arrays.fill(arr, 1,3,8);
    output(arr);

    结果是:0 8 8 0 0 
    分析:给第1位(0开始)到第3位(不包括)赋值8

    2、数组元素排序:sort

    eg1.

    int []arr = {3,2,1,5,4};
    Arrays.sort(arr);
    output(arr);

    结果是:1 2 3 4 5 
    分析:给所有数按升序排序 
    eg2.

    int []arr = {3,2,1,5,4};
    Arrays.sort(arr,1,3);
    output(arr);

    结果是:3 1 2 5 4 
    分析:给第1位(0开始)到第3位(不包括)排序

    3、比较数组元素是否相等:equals

    int []arr1 = {1,2,3};
    int []arr2 = {1,2,3};
    System.out.println(Arrays.equals(arr1,arr2));

    结果是:true 
    分析:如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。 
    这里补充一下,如果还是不用Arrays.equals,那么我们应该如何重写equals来比较两个数组的元素是否相等呢?这里提供一段代码

    //Compare the contents of two int arrays
        public static boolean isEquals(int[] a, int[] b)
        {
            if( a == null || b == null )
            {
                return false;
            }
            if(a.length != b.length)
            {
                return false;
            }
            for(int i = 0; i < a.length; ++i )
            {
                if(a[i] != b[i])
                {
                    return false;
                }
            }
            return true;
        }

    4、二分查找法找指定元素的索引值(下标):binarySearch

    数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置 
    eg1:

    int []arr = {10,20,30,40,50};
    System.out.println(Arrays.binarySearch(arr, 20));

    结果是:1 
    分析:能找到该元素,返回下标为1(0开始) 
    eg2:

    int []arr = {10,20,30,40,50};
    System.out.println(Arrays.binarySearch(arr, 35));

    结果是:-4 
    分析:找不到元素,返回-x,从-1开始数,如题,返回-4 
    eg3:

    int []arr = {10,20,30,40,50};
    System.out.println(Arrays.binarySearch(arr, 0,3,30));

    结果是:2 
    分析:从0到3位(不包括)找30,找到了,在第2位,返回2 
    eg4:

    int []arr = {10,20,30,40,50};
    System.out.println(Arrays.binarySearch(arr, 0,3,40));

    结果是:-4 
    分析:从0到3位(不包括)找40,找不到,从-1开始数,返回-4

    5、截取数组:copeOf和copeOfRange

    eg1: copy

    int []arr = {10,20,30,40,50};
    int []arr1 = Arrays.copyOf(arr, 3);
    output(arr1);

    结果:10 20 30 
    分析:截取arr数组的3个元素赋值给姓数组arr1 
    eg2: copyOfRange

    int []arr = {10,20,30,40,50};
    int []arr1 = Arrays.copyOfRange(arr,1,3);
    output(arr1);

    结果:20 30 
    分析:从第1位(0开始)截取到第3位(不包括)

    6、其他

    还有hashCode,toString,clone等这里就不介绍了,暂时用的少


    本文地址:http://liuyanzhao.com/2863.html 

    自古英雄出炼狱,从来富贵入凡尘。
  • 相关阅读:
    蜗牛爱课 -- iOS 设计模式之模板模式
    蜗牛爱课- iOS中plist的创建,数据写入与读取
    蜗牛爱课 - iOS7、8模态半透明弹出框
    UIScrollView的属性总结
    简述UITextField的属性和用法
    IOS开发 统计XCODE 代码行数
    当xcode里点运行出现treating unicode character as whites
    Your build settings specify a provisioning profile with the UUID, no such provisioning profile was found的解决方案
    CocoaPods安装和使用教程
    蜗牛爱课- CGAffineTransformMakeRotation 实现一张图片的自动旋转
  • 原文地址:https://www.cnblogs.com/yunliu0603/p/9474566.html
Copyright © 2011-2022 走看看