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日

相关文章

  • springsecurity 企业微信登入的实现示例

    下面我将为您详细讲解“springsecurity 企业微信登入的实现示例”的完整攻略。 简介 Spring Security是一个功能强大的安全框架,可以为应用程序提供可靠的身份验证和授权。企业微信是一家为企业提供协同办公解决方案的公司,提供了多元化的企业级应用,这两者的结合可以为企业提供一种更加可靠的安全登录方式。本文主要介绍如何使用Spring Sec…

    Java 2023年5月20日
    00
  • Struts2实现文件下载功能代码分享(文件名中文转码)

    下面是详细的“Struts2实现文件下载功能代码分享(文件名中文转码)”攻略: 1. 背景介绍 Struts2是一个优秀的MVC框架,而文件下载是很多Web项目中常见的需求。本文将介绍如何在Struts2中实现文件下载功能,并且解决中文文件名乱码的问题。 2. 实现步骤 2.1 编写Action 首先,我们需要创建一个Action类,用于处理文件下载请求。该…

    Java 2023年5月20日
    00
  • Spring Boot中使用 Spring Security 构建权限系统的示例代码

    下面是详细讲解“Spring Boot中使用 Spring Security 构建权限系统的示例代码”的完整攻略,包含了两条示例: 1. 构建Spring Boot项目 首先,我们需要构建一个Spring Boot项目,可以使用Maven或Gradle来管理依赖并生成项目文件。 在项目中添加以下依赖: <dependency> <group…

    Java 2023年5月20日
    00
  • 详解spring整合hibernate的方法

    下面是详解spring整合hibernate的方法的完整攻略: 一、准备工作 1.1 项目结构 首先,我们需要新建一个Maven项目,并在其中引入Spring和Hibernate的相关依赖,具体的pom.xml文件可以参考以下代码: <!– Spring –> <dependency> <groupId>org.spr…

    Java 2023年5月19日
    00
  • MyBatis基础支持DataSource实现源码解析

    首先,我们需要了解MyBatis是一个支持持久层的ORM框架,提供了一系列ORM操作的API。其中,DataSource是MyBatis框架中用于连接数据库的核心接口。在MyBatis框架中,我们可以使用基础支持的DataSource实现类来连接数据库。 接下来,我们来详细讲解“MyBatis基础支持DataSource实现源码解析”的完整攻略。 DataS…

    Java 2023年5月20日
    00
  • 详解Java实现负载均衡的几种算法代码

    当我们的应用程序规模开始不断增长时,单个服务器的负载可能会超过其处理能力的极限,导致我们的应用程序的性能下降甚至崩溃。这时就需要使用负载均衡来解决这个问题。本文主要讲解Java实现负载均衡的几种算法代码。 什么是负载均衡 负载均衡是指将请求分发到多个服务器上,以平衡每个服务器上的负载,避免单个服务器过载而导致应用程序的性能下降甚至崩溃。 负载均衡算法 负载均…

    Java 2023年5月19日
    00
  • SpringBoot集成JPA的示例代码

    下面我会详细讲解“SpringBoot集成JPA的示例代码”的完整攻略,过程中会包含两条示例。 1. 环境准备 在开始之前,我们需要确保我们的开发环境中已经安装好了以下软件: JDK 8或以上版本 IntelliJ IDEA或其他一款IDE 然后,我们需要确保我们在项目中引入了以下依赖: <dependency> <groupId>o…

    Java 2023年5月20日
    00
  • Maven之pom.xml文件中的Build配置解析

    针对”POM文件的 Build 配置”这个话题,我们来详细讲解一下。 Build 配置是什么? 在 Maven 项目中,Build 配置囊括了用于构建、测试、打包、部署等一系列操作的配置信息。这些信息都集中在项目根目录下的 pom.xml 文件中的 <build> 标签中。它包含了如下内容: 项目源代码目录 输出目录 编译器插件 资源文件 测试相…

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