Java 中的数据结构和算法,第 3 部分:多维数组

这篇教程详细讲解了Java中的多维数组,特别是二维数组的创建和使用,包括初始化器、仅new关键字和new与初始化器结合的方式。文章还介绍了矩阵乘法算法和参差不齐数组的应用,强调了参差不齐数组在大数据处理中的优势,并探讨了数组作为Java对象的本质。
摘要由CSDN通过智能技术生成

了解如何创建多维数组和不规则数组并在复杂的 Java 程序中使用它们

Java 中的数据结构和算法,第 2 部分 介绍了用于搜索和排序一维数组的各种技术,它们是最简单的数组。在本教程中,您将探索多维数组。我将向您展示创建多维数组的三种方法,然后您将学习如何使用矩阵乘法算法将二维数组中的元素相乘。我还将介绍参差不齐的数组,您将了解为什么它们在大数据应用程序中很受欢迎。最后,我们将考虑数组是否是Java 对象的问题。

本文为第 4 部分做准备,该部分介绍了 使用单向链表进行搜索和排序。

多维数组

甲多维数组具有多个索引阵列中的每个元素相关联。最常用的多维数组是二维数组,也称为表或矩阵。二维数组将其每个元素与两个索引相关联。

我们可以将二维数组概念化为由元素组成的矩形网格,分为行和列。我们使用(row, column)符号来标识一个元素,如图 1 所示。

因为二维数组非常常用,所以我将重点介绍它们。您对二维数组的了解可以推广到更高维的数组。

创建二维数组

在 Java 中创建二维数组共有三种技术:

  • 使用初始化程序
  • 使用关键字 new
  • 将关键字new与初始化程序一起使用

使用初始化器创建二维数组

  • 创建二维数组的仅初始化方法具有以下语法:
'{' [rowInitializer (',' rowInitializer)*] '}'
  • rowInitializer 具有以下语法:
'{' [expr (',' expr)*] '}'

此语法指出,二维数组是一个可选的、以逗号分隔的行初始值设定项列表,这些行初始值设定项出现在左括号和右括号字符之间。此外,每个行初始值设定项都是一个可选的、以逗号分隔的表达式列表,它们出现在左括号和右括号字符之间。与一维数组一样,所有表达式都必须计算为兼容的类型。

  • 下面是一个二维数组的例子:
{
    {
    20.5, 30.6, 28.3 }, {
    -38.7, -18.3, -16.2 } }

本示例创建一个包含两行三列的表。图 2 展示了此表的概念视图以及显示 Java 如何在内存中布置此(以及每个)表的内存视图。

图 2 显示 Java 将二维数组表示为一维行数组,其元素引用一维列数组。行索引标识列数组;列索引标识数据项。

关键字 new-only 创建

  • 关键字new为二维数组分配内存并返回其引用。此方法具有以下语法:
'new' type '[' int_expr1 ']' '['int_expr2 ']'
  • 此语法指出,二维数组是所有共享相同的(正)int_expr1行元素和(正)int_expr2列元素的区域type。此外,所有元素都归零。下面是一个例子:
new double[2][3] // Create a two-row-by-three-column table.

关键字 new 和初始化程序创建

  • new带有初始化方法的关键字具有以下语法:
'new' type '[' ']' [' ']' '{
   ' [rowInitializer (',' rowInitializer)*] '}'
  • whererowInitializer有以下语法:
'{' [expr (',' expr)*] '}'

此语法融合了前两个示例。因为可以从逗号分隔的表达式列表中确定元素的数量,所以您不需要int_expr在任何一对方括号之间提供。下面是一个例子:

new double [][] {
    {
    20.5, 30.6, 28.3 }, {
    -38.7, -18.3, -16.2 } }

二维数组和数组变量

  • 就其本身而言,新创建的二维数组是无用的。它的引用必须直接或通过方法调用分配给兼容类型的数组变量。以下语法显示了如何声明此变量:
type var_name '[' ']' '[' ']'
type '[' ']' '[' ']' var_name
  • 每个语法声明一个数组变量,用于存储对二维数组的引用。最好将方括号放在type. 考虑以下示例:
double[][] temperatures1 = {
    {
    20.5, 30.6, 28.3 }, {
    -38.7, -18.3, -16.2 } };
double[][] temperatures2 = new double[2][3];
double[][] temperatures3 = new double[][] {
    {
    20.5, 30.6, 28.3 }, {
    -38.7, -18.3, -16.2 } };

与一维数组变量一样,二维数组变量与一个.length属性相关联,该属性返回行数组的长度。例如,temperatures1.length返回 2。每个行元素也是一个具有.length属性的数组变量,该属性返回分配给行元素的列数组的列数。例如࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值