Java学习之旅(二三):数组的基本操作

遍历数组

遍历数组就是获取数组中的每个元素。通常遍历数组都是使用 for 循环来实现。除此之外,还可以使用 foreach 循环来实现遍历的功能。

例:用 foreach 循环遍历一维数组


public class test {

    public static void main(String[] args) {

        int a[] = {1,2,3,4,5};
        System.out.print("数组中的元素有:");
        for (int x : a) {
            System.out.print(x + " ");
        }
        System.out.println();

    }

}

例:用 foreach 循环遍历二维数组


public class test {

    public static void main(String[] args) {

        int a[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
        System.out.println("数组中各元素分别是:");
        int i = 0;
        for (int x[] : a) {
            i++;
            int j = 0;
            for (int e : x) {
                j++;
                System.out.print("a[" + (i - 1) + "][" + (j - 1) + "] = " + e + "  ");
            }
            System.out.println();
        }
        System.out.println();

    }

}

填充替换数组元素

数组中的元素定义完成后,可通过 Arrays 类的静态方法 fill() 来对数组中的元素进行替换。该方法通过各种重载形式可完成对任意类型的数组元素的替换。fill() 方法有两种参数类型:

(1)fill(int[] a, int value)

  • a:要进行替换的数组
  • value:要存储数组中所有元素的值

该方法可将指定的 int 值分配给 int 型数组的每个元素。

import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        int a[] = new int[5];
        Arrays.fill(a, 5);
        for (int x = 0; x < a.length; x++) {
            System.out.println("第" + (x + 1) + "个元素是:" + a[x]);
        }

    }

}

(2)fill(int[] a, int fromIndex, int toIndex, int value)

a:要进行填充的数组

  • fromIndex:要使用指定值填充的第一个元素的索引(包括)
  • toIndex:要使用指定值填充的最后一个元素的索引(不包括)
  • value:要存储在数组中所有元素的值

该方法将指定的 int 值分配给 int 型数组指定范围中的每个元素。填充的范围从索引 fromIndex 开始一直到索引 toIndex(不包括)为止。如果 fromIndex == toIndex,则填充范围为空。

import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        int a[] = new int[]{1,2,3,4,5};
        Arrays.fill(a, 2, 4, 8);
        for (int x = 0; x < a.length; x++) {
            System.out.println("第" + (x + 1) + "个元素是:" + a[x]);
        }

    }

}

对数组进行排序

通过 Arrays 类的静态方法 sort() 可以实现对数组的排序。sort() 方法提供了多种重载形式,可对任意类型的数组进行升序排序。

import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        int a[] = new int[]{1,3,9,5,7,10};
        Arrays.sort(a);
        for (int x = 0; x < a.length; x++) {
            if (x == (a.length - 1)) {
                System.out.print(a[x]);
            } else {
                System.out.print(a[x] + " < ");
            }
        }
        System.out.println();
    }

}

如果是对 String 类型数组排序,需要知道 Java 中的 String 类型数组的排序算法是根据字典编排顺序排序的,因此数字排在字母前面,大写字母排在小写字母前面。

复制数组

Arrays 类的 copyOf() 方法与 copyOfRange() 方法可以实现对数组的复制。copyOf() 方法是复制数组至指定长度,copyOfRange() 方法则将指定数组的指定长度复制到一个新数组中。

(1)copyOf(arr, int newLength) 方法

  • arr:要进行复制的数组
  • newLength:int 型常量,指复制后的新数组的长度。如果新数组的长度大于数组 arr 的长度,则用0来填充(根据复制数组的类型来决定填充的值,整型用0来填充,char 型用 null 来填充);如果复制后的数组长度小于数组 arr 的长度,则会从数组 arr 的第一个元素开始截取至满足新数组的长度为止。
import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        int a[] = new int[]{1,3,9};
        System.out.println("数组a的元素为:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();
        int b[] = Arrays.copyOf(a, 5);
        System.out.println("数组b的元素为:");
        for (int x = 0; x < b.length; x++) {
            System.out.print(b[x] + " ");
        }
        System.out.println();
    }

}

(2)copyOfRange(arr, int fromIndex, int toIndex)

  • arr:要进行复制的数组对象
  • fromIndex:指定开始复制数组的索引位置。fromIndex 必须在0至整个数组长度之间,新数组包括索引是 fromIndex 的元素
  • toIndex:要复制范围的最后索引位置。可大于数组 arr 的长度,新数组不包括索引是 toIndex 的元素
import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        int a[] = new int[]{1,3,9,7,5,10};
        System.out.println("数组a的元素为:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();
        int b[] = Arrays.copyOfRange(a, 1, 5);
        System.out.println("数组b的元素为:");
        for (int x = 0; x < b.length; x++) {
            System.out.print(b[x] + " ");
        }
        System.out.println();
    }

}

数组查询

Arrays 类的 binarySearch() 方法可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索的元素的索引值。binarySearch() 方法提供了多种重载形式,用于满足各种类型数组的查询需要。

(1)binarySearch(Object[] a, Object key)

  • a:要搜索的数组
  • key:要搜索的值

如果 key 包含在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是搜索键将要插入数组的那一点,即第一个大于此键值的元素索引。

import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        int a[] = new int[]{1,3,9,7,5,10};
        Arrays.sort(a);
        int index = Arrays.binarySearch(a, 7);
        System.out.println("元素7在数组a中的索引为:" + index);
    }

}

在使用该方法之前必须先对数组进行排序。如果没有对数组进行排序,则结果是不确定的。如果数组中包含多个指定元素,则无法保证找到的是哪个。同时,返回值是搜索的元素在排序之后的数组中的索引位置。

(2)binarySearch(Object[] a, int fromIndex, int toIndex, Object key)

  • a:要进行搜索的数组
  • fromIndex:指定搜索范围的开始索引(包括)
  • toIndex:指定搜索范围的结束索引(不包括)
  • key:要搜索的元素

使用该方法之前同样要对数组进行排序,来获得准确的索引值。如果要搜索的元素 key 值在指定的范围内,则返回搜索的键值的索引值;否则返回-1或“-”(插入点)。如果范围内的所有元素都小于指定的键值,则返回 toIndex(这保证了当且仅当此键值被找到时,返回值大于等于0)。

import java.util.Arrays;

public class test {

    public static void main(String[] args) {

        String str[] = new String[]{"ab","cd","e","xyz","g","f"};
        Arrays.sort(str);
        int index = Arrays.binarySearch(str, 0, 5, "f");
        System.out.println("元素f在数组str中的索引为:" + index);
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值