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数组常见应用详解【创建、遍历、排序、查找】 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java中高效的判断数组中某个元素是否存在详解

    Java中高效的判断数组中某个元素是否存在的方法,一般有以下两种: 方法一:使用Arrays类中的binarySearch()方法 Arrays类中的binarySearch()方法可以对已排序的数组进行二分查找,返回匹配元素的索引,若未找到则返回负数。该方法需要先对数组进行排序,时间复杂度为 O(log n)。 下面是一个使用binarySearch()方…

    Java 2023年5月26日
    00
  • Java 切割字符串的几种方式集合

    Java 切割字符串的几种方式集合 在Java中,切割字符串是非常常见的操作。本文将介绍Java中切割字符串的几种方式,包括使用StringTokenizer、split()函数和正则表达式等。 使用StringTokenizer java.util.StringTokenizer类是Java内置用来分割字符串的类,它可以将一个字符串按照指定的分隔符进行分割…

    Java 2023年5月26日
    00
  • 如何快速搭建一个自己的服务器的详细教程(java环境)

    让我来给你详细讲解一下如何快速搭建一个自己的服务器的详细教程(java环境)吧。 1. 确认所需软件和环境 在开始搭建自己的服务器之前,需要确认以下所需软件和环境是否齐备: 一台云服务器 Java 运行环境 SSH 客户端 其中,云服务器需要自行选择购买和设置,Java 运行环境可以通过官方网站下载并安装,SSH 客户端可以使用 Putty 等工具。 2. …

    Java 2023年5月19日
    00
  • 浅析Java中的 new 关键字

    浅析Java中的 new 关键字 在Java中,new关键字是程序员经常使用的一种创建对象的方法。通过使用new关键字,程序员可以在运行时动态地创建对象并将其分配给内存。本文将对Java中的new关键字进行浅析,包括其作用、使用方法和一些注意事项。 作用 new关键字的主要作用是创建对象并将其分配给内存。在Java中,每个对象都必须通过new关键字进行创建,…

    Java 2023年5月26日
    00
  • 浅谈Java8对字符串连接的改进正确姿势

    标题:浅谈Java8对字符串连接的改进正确姿势 Java8中针对字符串连接做了很大的改进,通过这篇文章我将详细讲解Java8新特性中对字符串连接的改进,同时提供两个示例帮助读者更加深入理解。 一、Java8之前的字符串连接方式 在Java8之前,我们通常使用“+”符号将多个字符串拼接到一起,例如: String firstName = "John&…

    Java 2023年5月26日
    00
  • SpringBoot整合Scala构建Web服务的方法

    针对这个问题,我会分为以下几个部分来逐步讲解: SpringBoot整合Scala的基础知识 构建Scala的Web服务 示例说明 总结 接下来,我会一步步讲解每一个部分。 1. SpringBoot整合Scala的基础知识 首先需要介绍Scala语言和SpringBoot框架的基本概念。 Scala是一种面向对象的静态类型编程语言,同时也支持函数式编程,是…

    Java 2023年6月3日
    00
  • Java 实现word模板转为pdf

    关于Java实现Word模板转为PDF的攻略,主要分为以下几个步骤: 使用Java读取Word模板文件,可以使用Apache POI库或者JACOB库来实现 使用FreeMarker或者Velocity模板引擎,将Word模板中的内容填充到模板文件中,生成新的Word文档文件 使用Itext或者Apache PDFBox库,将生成的新Word文档转换为PDF…

    Java 2023年6月15日
    00
  • java使用多线程找出最大随机数

    找出最大随机数这一问题可以使用多线程来优化程序的效率和性能。Java提供了多种实现多线程的方法,本文将介绍如何使用Java多线程来寻找最大随机数。 1.使用Runnable接口 使用Runnable接口是实现多线程的最简单方法之一。Java中的Runnable接口定义了一个run()方法,当线程启动时该方法会被执行。我们可以通过实现Runnable接口并实现…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部