java二维数组

news2025/2/2 13:02:38

一、二维数组的概述:

目录

二维数组的概述:

二维数组图解:

二维数组的四种创建方式:

Java 用sort对二维数组进行排序


二维数组简单概述:Java中的二维数组一般应用在矩阵的一些运算、棋盘游戏中棋盘的实现、二维数据的处理、图表的绘制、数据库的存储等方面。特别是在处理数据表示矩阵等情况下非常有用,可以方便的存储和操作数据。

二、二维数组图解:

二维数组本质上是每个一维数组都包含一个或多个元素,其中每个元素都代表二维数组中的一个元素。因此,二维数组是以数组作为其元素的数组,即数组的数组。

例如:int[ ][ ] arr = new int[3][4];(3行,4列) 这段代码创建的时候是创建了数组,如下图。

三、二维数组的四种创建方式:

1.通过实例化创建一个数组对象

//方式一
int[][] arr1 = new int[3][4];
//循环遍历数组给数组赋值
for (int i = 0; i < arr1.length; i++) {
	for (int j = 0; j < arr1[i].length; j++) {
		arr1[i][j] = 5;
	}
}
//打印输出一下看一下结果
System.out.println(Arrays.deepToString(arr1));

以上这段代码的输出结果:

[[5, 5, 5, 5], [5, 5, 5, 5], [5, 5, 5, 5]]

2.通过数组指针用new开辟空间

//方式二
int[][] arr2 = new int[3][];
arr2[0] = new int[2]; // 第一行 2个元素
arr2[1] = new int[4]; //第二行 3个元素
for (int i = 0; i < arr2.length; i++) {
	if (arr2[i] != null) {
		for (int j = 0; j < arr2[i].length; j++) {
			arr2[i][j] = 5;
		}
	}
}
System.out.println(Arrays.deepToString(arr2));

以上这段代码的输出结果:
通过new开辟空间之后,如果不赋值,该空间的值是默认值null。

[[5, 5], [5, 5, 5, 5], null]

3.声明并初始化

//方式三
int[][] arr3 = new int[][] { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };

4.声明并初始化的简写方式

//方式四,通用简写方式
int[][] arr4 = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };

以下是使用二维数组时需要注意的几个事项:
声明和初始化:在声明二维数组时,需要指定行和列的数量。例如,int[][] array = new int[3][4];声明了一个3行4列的二维数组。

访问元素:可以通过array[row][col]的方式访问二维数组中的元素。行和列都是从0开始计数的。

越界:访问二维数组的元素时,需要注意不要越界。例如,访问array[3][4]将会导致数组越界异常。

初始化:在使用二维数组之前,需要先对其进行初始化。可以通过分配 初始值的方式初始化二维数组,也可以在声明时直接初始化。

内存表示:二维数组在内存中是连续存储的。每一行都是一个连续的元素序列,然后每一行的元素在内存中是连续存储的。

传递参数:当将二维数组作为函数参数传递时,需要指定列的数量。这是因为Java在传递二维数组时实际上是传递了一个指向二维数组的指针。

四、Java 用sort对二维数组进行排序

用Arrays.sort()对一维数组进行降序排序(改变原来数组)相信大家一定不陌生,但对今天给大家分享一下sort对二维数组的3种排序方式。

1.重写compare()方法

import java.util.Arrays;
import java.util.Comparator;
 
public class test {
    public static void main(String[] args) {
        int[][] arr = {{1,5},{5,3},{3,34},{2,4}};
       Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];//数组里面的下标为0,表示排序根据数组的第一列排序
            }
        });
        
        for (int[] arrs:arr){
            for (int n:arrs){
                System.out.print(n+" ");
            }
            System.out.println();
        }
    }
}

(2)使用Lambda表达式的方式对Comparator比较器进行简写(JDK1.8以上可用Lambda表达式)

import java.util.Arrays;
import java.util.Comparator;
 
public class test {
    public static void main(String[] args) {
        int[][] arr = {{1,5},{5,3},{3,34},{2,4}};
     
        
        Arrays.sort(arr,((o1, o2) -> {
            return o1[0]-o2[0];
        }));
        for (int[] arrs:arr){
            for (int n:arrs){
                System.out.print(n+" ");
            }
            System.out.println();
        }
    }
}

(3)用comparingInt(a->a[index])排序

二维数组会根据第index+1(index=1或index=0)的数据进行排序

import java.util.Arrays;
import java.util.Comparator;
 
public class test {
    public static void main(String[] args) {
        int[][] arr = {{1,5},{5,3},{3,34},{2,4}};
      
        Arrays.sort(arr,Comparator.comparingInt(a->a[0]));//根据二维数组的第一列数据进行比较
       
        for (int[] arrs:arr){
            for (int n:arrs){
                System.out.print(n+" ");
            }
            System.out.println();
        }
    }
}

运行结果

一下是上述三种方法以数组第一列为数据进行排序的运行结果

 根据第二列数据进行排序

import java.util.Arrays;
import java.util.Comparator;
 
public class test {
    public static void main(String[] args) {
        int[][] arr = {{1,5},{5,3},{3,34},{2,4}};
     
        Arrays.sort(arr,((o1, o2) -> {
            return o1[1]-o2[1];
        }));
        for (int[] arrs:arr){
            for (int n:arrs){
                System.out.print(n+" ");
            }
            System.out.println();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用阿里云试用Elasticsearch学习:5. 地理位置

我们拿着纸质地图漫步城市的日子一去不返了。得益于智能手机&#xff0c;我们现在总是可以知道 自己所处的准确位置&#xff0c;也预料到网站会使用这些信息。我想知道从当前位置步行 5 分钟内可到的那些餐馆&#xff0c;对伦敦更大范围内的其他餐馆并不感兴趣。 但地理位置功…

【Linux】磁盘阵列RAID技术

目录 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 1.2 为什么要使用RAID技术&#xff1f; 二、RAID级别 2.1 常见的RAID级别 2.2 常见RAID介绍 三、RAID特性对比 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 把多块独立的物理磁盘按不同的方式组合起来形成一个硬盘…

基于zookeeper安装Kafka集群

操作系统&#xff1a;centOS 9 Stream&#xff0c;6台&#xff0c;基于vmware虚拟机创建 准备工作 确认系统环境&#xff1a; 确保所有服务器已安装了最新更新。安装Java Development Kit (JDK) 8或更高版本&#xff0c;因为ZooKeeper和Kafka都是基于Java开发的。例如&#x…

【安全】查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用&#xff0c;使用top命令查看cpu使用率长时间50%以上&#xff0c;cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己&#xff0c;top命令无法查看到挖矿病毒进程&#xff0c;可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

外卖小程序实战-接单后小票机自动打印订单

1、导入小票机的sdk https://www.feieyun.com/api/API-JAVA.zip public static String addprinter(String snlist){//通过POST请求&#xff0c;发送打印信息到服务器RequestConfig requestConfig RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTi…

文件读写异常处理(day25)

题目一&#xff1a;文件读写异常处理 要求&#xff1a; 编写一个Java程序&#xff0c;该程序尝试读取一个名为example.txt的文件&#xff0c;并逐行打印其内容到控制台。 如果文件example.txt不存在&#xff0c;程序应捕获FileNotFoundException异常&#xff0c;并输出相应的…

ActiveMQ 任意文件上传漏洞复现

一、使用弱口令登陆 ​ 访问 http://ip:8161/admin/ 进入admin登陆页面&#xff0c;使用弱口令登陆&#xff0c;账号密码皆为 admin&#xff0c;登陆成功后&#xff0c;headers中会出现验证信息 ​ 如&#xff1a; Authorization: Basic YWRtaW46YWRtaW4 # 二、利用PUT协议上…

Docker 入门介绍及简单使用

Docker 的简单介绍 中文官网&#xff1a;Docker中文网 官网 英文官网&#xff1a;Docker: Accelerated Container Application Development Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用及其依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 …

【Java开发指南 | 第八篇】Java变量、构造方法、创建对象

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 Java变量构造方法创建对象 Java变量 在Java中&#xff0c;变量用于存储数据值。它们是程序中用于保存信息的一种基本方式。变量在程序执行过程中可以被赋予不同的值&#xff0c;并且这些值可以在程序的不同部分…

使用Python模仿文件行为

在Python中&#xff0c;你可以通过文件操作函数&#xff08;如open()函数&#xff09;以及模拟输入输出流的库&#xff08;如io模块&#xff09;来模拟文件行为。下面是一些示例&#xff0c;展示了如何使用这些工具在Python中模拟文件行为。 1、问题背景 在编写一个脚本时&…

轮胎行业EDI:Tigar 轮胎EDI项目案例

Tigar 轮胎是一家塞尔维亚轮胎制造公司&#xff0c;自2007年开始&#xff0c;被轮胎制造商米其林持有。 Tigar通过EDI来传输与供应商之间的业务单据&#xff0c;优化业务流程。本文将从EDI需求概览、如何基于知行之桥EDI系统实现与Tigar的EDI对接以及项目回顾这三个部分为大家展…

Docker部署MongoDB数据库

文章目录 官网地址docker 网络部署 MongoDB部署 mongo-expressdocker-compose.ymlMongoDB shell 官网地址 https://www.mongodb.com/zh-cn docker 网络 # 创建 mongo_network 网络 docker network create mongo_network # 查看网络 docker network list # 容器连接到 mongo_…

AI智能分析网关V4平台告警数据清理方法:自动清理与手动清理

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;目前拥有3种型号&#xff08;8路/16路/32路&#xff09;&#xff0c;支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

C语言中的结构体:从定义到传递

前言 结构体是C语言中一种重要的数据类型&#xff0c;它允许我们将不同类型的数据组合成一个整体&#xff0c;并以自定义的方式进行操作。通过结构体&#xff0c;我们可以更加灵活地管理和处理复杂的数据结构&#xff0c;从而提高程序的可读性和可维护性。本篇博客将从结构体的…

allure2教程-1-环境搭建

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 自动化测试执行完成后我们需要展示给其他人看&#xff0c;这就要有自动化测试报告了。复杂的测试报告当然可以自己代码实现&#xff0c;但用pytest-html或allure基本也能满足我们生成测试报告的要求了。本小节介绍…

Rustdesk如何编译代码实现安装后,不会在右下角出现托盘图标

环境&#xff1a; Rustdesk1.1.9 问题描述&#xff1a; Rustdesk如何编译代码实现安装后&#xff0c;不会在右下角出现托盘图标 解决方案&#xff1a; 安装后只有自定义进程图标 详细方案&#xff0c;有需要私聊

Python及软件测试方面的总结的技巧

目录 一.Python &#xff08;一&#xff09;输入pip安装包时出现Fatal error in launcher错误 &#xff08;二&#xff09;如何使用清华镜像安装库 二.软件测试 一.Python &#xff08;一&#xff09;输入pip安装包时出现Fatal error in launcher错误 解决方法&#xff1a…

Linux之bpfjit(2)使用分析和mini-tcpdump实现

Linux之bpfjit(2)使用分析和mini-tcpdump实现 Author: Once Day Date: 2024年4月13日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可以参考专栏&#xff1a;…

简约风好看的个人主页源码

效果图 PC端 移动端 源代码 index.html &#xfeff;<html lang"en"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…

全网短剧搜索源码+短剧API接口 短剧下载 热门短剧 全开源可二开

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 pc端h5手机端全网短剧搜索前端源码分享 内含7000短剧资源(不支持在线播放&#xff09; 搜索API接口&#xff1a;文件内查看 全部短剧API接口&#xff1a;文件内查看 每日更新API接…