迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 锯齿状数组

作者:迹忆客 最近更新:2023/09/14 浏览次数:

本教程介绍了 Java 锯齿状数组。我们将通过不同的代码示例了解它的内存表示和实现。


Java 锯齿状数组

要理解锯齿状数组,你必须对数组有一个很好的理解。锯齿状数组,也称为不规则数组,是一个数组,其中每个成员数组的大小都不同。

这里,数组数组是指二维数组;它可以是 2D 或 3D 或更多维度。请参阅以下视觉演示以了解锯齿状数组。

java 锯齿状数组——可视化演示

我们可以看到每个成员数组的大小互不相同。这就是我们所说的锯齿状或锯齿状数组。

Java 中锯齿状数组的声明与初始化

有多种方式来声明和初始化锯齿状数组;我们将在下面使用从视觉解释中提取的 int 类型数组来查看它们中的每一个。

使用第一种方法,我们首先通过指定大小来声明基本数组。然后,我们为每个成员数组写入不同的大小。

在这里,我们将声明和初始化过程分开。请参阅以下代码段。

声明锯齿状数组:

//declare base array of size 4 (it would be an array of arrays)
int arr[][] = new int[4][];

//declare member arrays
arr[0] = new int[3]; //here the 3 shows the no of columns in row-1
arr[1] = new int[4]; //here the 4 shows the no of columns in row-2
arr[2] = new int[1]; //here the 1 shows the no of columns in row-3
arr[3] = new int[2]; //here the 2 shows the no of columns in row-4

接下来,静态初始化锯齿状数组。

arr[0] = new int[]{1,2,3};
arr[1] = new int[]{1,2,3,4};
arr[2] = new int[]{4};
arr[3] = new int[]{4,5};

或者,我们可以动态初始化锯齿状数组,这意味着我们从用户那里获取输入并在运行时初始化数组。

Scanner sc = new Scanner(System.in);

for (int base = 0; base < arr.length; base++) {
     for (int member = 0; member < arr[base].length; member++) {
          arr[base][member] = sc.nextInt();
     }
}

在第二种方法中,我们可以一步声明和初始化锯齿状数组。我们可以用各种方式编写这一步。

请参阅下面给出的代码片段。

int arr[][] = new int[][]{
              new int[] {1, 2, 3},
              new int[] {1, 2, 3, 4},
              new int[] {4},
    		  new int[] {4, 5}
            };

                              OR

int[][] arr = {
              new int[] {1, 2, 3},
              new int[] {1, 2, 3, 4},
              new int[] {4},
    		  new int[] {4, 5}
             };

                              OR

int[][] arr = {
              	{1, 2, 3},
                {1, 2, 3, 4},
                {4},
                {4, 5}
 			};

让我们深入了解锯齿状数组的更详细实现,我们将在其中静态和动态地分配值。

Java 中的锯齿状数组实现示例

示例代码(锯齿状数组是静态初始化的):

public class jagggedArrayTest {
    public static void main(String args[]) {

        int arr[][] = new int[][]{
            new int[] {1, 2, 3},
            new int[] {1, 2, 3, 4},
            new int[] {4},
            new int[] {4, 5}
          };

        for (int base = 0; base < arr.length; base++) {
            System.out.print("arr["+base+"] ======> {");
            for (int member = 0; member < arr[base].length; member++) {
                if(member < arr[base].length - 1)
                    System.out.print(arr[base][member] + ", ");
                else
                    System.out.print(arr[base][member]);
            }
            System.out.print("}");
            System.out.println();
        }
    }
}

输出:

arr[0] ======> {1, 2, 3}
arr[1] ======> {1, 2, 3, 4}
arr[2] ======> {4}
arr[3] ======> {4, 5}

我们首先在 main 函数中声明并初始化锯齿状数组。然后,我们使用嵌套的 for 循环来打印锯齿状数组,其中外循环用于迭代基本数组(行),而内循环用于迭代成员数组(列)。

示例代码(动态填充锯齿状数组):

import java.util.Scanner;

public class jaggedArrayTest {

    /*
    this function prints the populated jagged array
    */
    static void printJaggedArray(int[][] arr){

        System.out.println("The populated array looks like as follows:");

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

            for (int member = 0; member < arr[base].length; member++) {
                if(member < arr[base].length - 1)
                    System.out.print(arr[base][member] + ", ");
                else
                    System.out.print(arr[base][member]);
            }

            System.out.print("}");
            System.out.println();
        }
    }
    /*
    this function populates the jagged array by
    taking input from the user
    */
    static void populateJaggedArray(int[][] arr){
        Scanner sc = new Scanner(System.in);

        for (int base = 0; base < arr.length; base++) {
            System.out.println("Enter the member array at index " + base);

            for (int member = 0; member < arr[base].length; member++) {
          		arr[base][member] = sc.nextInt();
     		}
		}
        //print jagged array
        printJaggedArray(arr);
    }

    public static void main(String args[]) {

        //declare base array of size 4 (it would be an array of arrays)
		int arr[][] = new int[4][];

		//declare member arrays
		arr[0] = new int[3]; //here the 3 shows the no of columns in row-1
		arr[1] = new int[4]; //here the 4 shows the no of columns in row-2
		arr[2] = new int[1]; //here the 1 shows the no of columns in row-3
		arr[3] = new int[2];  //here the 2 shows the no of columns in row-4

        //populate jagged array
        populateJaggedArray(arr);
    }
}

输出:

Enter the member array at index 0
1 2 3
Enter the member array at index 1
1 2 3 4
Enter the member array at index 2
4
Enter the member array at index 3
4 5
The populated array looks like as follows:
arr[0] ======> {1, 2, 3}
arr[1] ======> {1, 2, 3, 4}
arr[2] ======> {4}
arr[3] ======> {4, 5}

在这里,我们在 jaggedArrayTest 类中拥有三个名为 main()populateJaggedArray()printJaggedArray() 的方法。main() 方法声明并初始化锯齿状数组,该数组被传递给 populateJaggedArray() 函数以进行填充。

此外,它调用 printJaggedArray() 来打印填充的锯齿状数组。请记住,我们只是动态地填充锯齿状数组,但你也可以使用用户的输入值来获取基本数组和成员数组的大小。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便