Java数组常见应用详解【创建、遍历、排序、查找】

数组是一种非常常见的数据结构,它可以用于存储一组数据,并且支持快速的遍历、排序和查找等操作。在Java中,数组是一个容器对象,可以存储相同类型的元素,并且在创建后其大小是不可改变的。本文将详细介绍Java数组的创建、遍历、排序

Java数组常见应用详解

数组是一种非常常见的数据结构,它可以用于存储一组数据,并且支持快速的遍历、排序和查找等操作。在Java中,数组是一个容器对象,可以存储相同类型的元素,并且在创建后其大小是不可改变的。本文将详细介绍Java数组的创建、遍历、排序和查找等常见应用,让大家对Java数组有更深入的了解。

创建数组

在Java中,可以通过以下方式来创建数组:

//声明方式1
元素类型[] 数组名 = new 元素类型[数组长度];

//声明方式2
元素类型[] 数组名 = {元素1, 元素2, ...};

//声明方式3
元素类型 数组名[] = {元素1, 元素2, ...};

创建一个长度为n的int类型数组的示例代码如下:

int[] arr1 = new int[n];
int[] arr2 = {1, 2, 3, 4, 5};
int arr3[] = {1, 2, 3, 4, 5};

遍历数组

遍历数组是指按照数组元素的顺序依次访问数组中每个元素的操作。Java数组支持两种遍历方式:普通for循环和增强for循环。

使用普通for循环遍历数组示例代码如下:

for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

使用增强for循环遍历数组示例代码如下:

for (int num : arr) {
    System.out.print(num + " ");
}

排序数组

数组排序是指将数组中的元素按照一定的规则进行排序的操作。Java数组提供了Arrays类和Collections类中的sort()方法来快速排序数组。

使用Arrays类的sort()方法对数组进行排序的示例代码如下:

Arrays.sort(arr);
for (int num : arr) {
    System.out.print(num + " ");
}

查找数组

数组查找是指在数组中查找指定元素的操作。Java数组提供了Arrays类中的binarySearch()方法来快速查找数组中的元素。

使用Arrays类的binarySearch()方法在数组中查找指定元素的示例代码如下:

Arrays.sort(arr);
int index = Arrays.binarySearch(arr, target); // target为要查找的元素
System.out.println("该元素在数组中的下标为:" + index);

更加详细的Java数组应用教程可以参考以下文章:

Java数组应用全解析

Java Arrays类全方位指南

示例说明

示例1:统计元素出现次数

下面这段代码可以实现一个功能:输入一组数,统计其中每个数出现的个数。

public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    int[] a=new int[1000]; //用来存储输入的数组
    int[] b=new int[1000]; //用来统计每个数字出现次数
    int n; //n为输入的数字个数
    System.out.println("请输入数字个数:");
    n=scanner.nextInt();
    System.out.println("请输入数字:");
    for(int i=0;i<n;i++){
        a[i]=scanner.nextInt();
        b[a[i]]++;  //统计数字出现次数
    }
    for(int i=0;i<1000;i++){
        if(b[i]>0){
            System.out.println(i+":"+b[i]);
        }
    }
    scanner.close();
}

示例2:找出数组中第k小的数

下面这段代码可以实现一个功能:找出一个数组中第k小的数。

public static int quickSelect(int[] a, int left, int right, int k) {
    if (left == right) {
        return a[left];
    }
    // partition将数组a分为两部分
    int p = partition(a, left, right);
    int m = p - left + 1;
    if (k == m) {
        return a[p];
    } else if (k > m) {
        return quickSelect(a, p + 1, right, k - m);
    } else {
        return quickSelect(a, left, p - 1, k);
    }
}

public static int partition(int[] a, int left, int right) {
    int pivot = a[right];
    int i = left - 1;
    for (int j = left; j < right; j++) {
        if (a[j] < pivot) {
            i++;
            int tmp = a[i];
            a[i] = a[j];
            a[j] = tmp;
        }
    }
    int tmp = a[i + 1];
    a[i + 1] = a[right];
    a[right] = tmp;
    return i + 1;
}

public static void main(String[] args) {
    int[] arr = {1, 4, 2, 3, 6, 5, 8, 7};
    int k = 3;
    int res = quickSelect(arr, 0, arr.length - 1, k);
    System.out.println("数组中第" + k + "小的数为:" + res);
}

本文标题为:Java数组常见应用详解【创建、遍历、排序、查找】

基础教程推荐