阵列作为Java中的数据结构的概述
#java #arrays

作为开发人员,您需要了解数据结构以及它们如何帮助您的技术旅程。本文将仅关注数组如何作为数据结构工作。本文的主要编程语言将是Java。

什么是数据结构?

数据结构是组织,处理,检索和存储数据的格式。它们旨在以特定方式安排数据,使用户可以轻松访问所需的数据。

数据结构的一些好处包括但不限于以下内容:

  • 他们有助于保护数据
  • 他们有助于组织数据
  • 他们允许在软件系统上轻松处理数据
  • 他们有助于解决现实生活中的问题。

数据结构的类型

每个开发人员都应该知道七个数据结构:

阵列

数组是著名的数据结构。数组是按时间顺序存储的值集合。数组中的值的索引为零,即存储的值从0。

开始。

linkedlist

linkedlist是一个数据结构,其中包含一个数据字段,该节点链接到列表中的下一个节点。该链接也称为参考。

堆栈

堆栈是遵循特定顺序的数据结构。该订单可以是第一个,最后一个(filo)或最后一个(LIFO)订单。它们也是线性数据结构,即数据结构是在线路上排列或遵循直线趋势的。

队列

队列是一种线性数据结构,在两端都打开,并且运算首先出现在(FIFO)顺序中。

类似于家谱,树是节点的集合。树的每个节点存储一个值并链接到其他节点( children )。这种称为层次结构的数据结构专门组织和存储数据。

堆是独特的数据结构,它们完全是二进制树。有两种类型的堆:

  1. 最大堆属性:这是堆大于子节点的地方,并且根节点的键比其他节点更重要。
  2. min堆属性:这是堆小于子节点的地方,而根节点的键是树中最小的。

图是涉及顶点(每个形状的角点)和边缘的数据结构。在数据结构中,顶点定义为节点和边缘,为连接两个节点的线。最终,您可以说图形是一组顶点(V)和一堆边缘(E);它称为g(e,v)。

数组作为数据结构

如前所述,数组是存储在单个变量中的多个值中的值的集合,而不是将每个值存储在单独的变量中。要在Java中声明数组,请定义变量类型,然后是方括号。

String[] books:

Save this code

阵列的一个示例是鸡蛋纸箱,因为纸箱的鸡蛋按顺序排列,每个部分都保持鸡蛋。

数组通常用于构建其他更复杂的数据结构。它们也用于分类算法。

多维阵列

这些只是数组的数组,这意味着一个数组在另一个多维数组中存储/元素以表格形式存储。

多维数组的语法:

data_type[1st dimension][2nd dimension][]..[Nth dimension]
array_name = new data_type[size1][size2]….[sizeN];

Save this code

  • data_type代表数据类型,例如intStringchar3
  • dimension表示您要创建的数组的维度,例如1d,2d等
  • array_name代表数组的名称
  • size1size2表示尺寸的大小

二维阵列

二维阵列是一维数组的阵列。这是任何多维数组的最简单形式。

两个多维数组的示例:

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

        int[][] arr = { { 5, 0 }, { 1, 7 } };

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(arr[i][j] + " ");
            }

             System.out.println();
        }
    }
}

输出:

5 0
1 7

三维阵列

三维阵列是多维阵列的复杂形式,因为它具有三个侧/尺寸。一种简单的理解方法是,这种多维数组的这种形式是二维数组的数组。

三个多维数组的示例:

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

    int[][][] arr = {{{ 5, 0 }, { 1, 7 },{2 , 9}},};
        for(int i=0; i < arr.length; i++){
      for(int j=0; j < arr[i].length; j++){
         for(int k=0; k < arr[i][j].length; k++){
            System.out.print( arr[i][j][k] + " ");
         }
         System.out.println(); 
      }
      System.out.println(); 
    }
  }

}

Save this code

如果我们执行上述代码,则输出为:

5 0
1 7
2 9

在Java中,多维数组的大小是存储的元素总数,这意味着可以通过乘以尺寸的长度来计算多维数组。

注意:在多维数组中显示数据的最佳方法是使用嵌套或双嵌套的前面循环。

ArrayLists&列表接口

arraylists

阵列清单是围绕数组并提供基本功能的数据结构。一些功能正在添加和删除元素,并检查数组是否包含元素。它是Java Collection框架的一部分,是java.util软件包。

有时,阵列列表可能比标准数组慢。尽管如此,它们在许多阵列的操作的程序中都有帮助。

阵列列表的一个关键优势是,与数组不同,您可以声明阵列列表,无论大小如何。如果您不知道要存储的元素的程度,则可以使用arraylist。

这是阵列列表的代码段,而没有声明大小:

import java.io.*;
import java.util.*;

class example {
        public static void main(String[] args)
        {
                ArrayList<Integer> bags = new ArrayList<>();

                for (int i = 1; i <= 7; i++)
                        bags.add(i);

                System.out.println(bags);
                bags.remove(3);

                System.out.println(bags);

                for (int i = 0; i < bags.size(); i++)
                        System.out.print(bags.get(i) + " ");
        }
}

Save this code

输出:

[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 5, 6, 7]
1 2 3 5 6 7

列表接口

在Java中,列表是提供存储Ordered collection的方法的界面。他们是孩子的界面。列表是存储重复值的对象/元素的订购集合。与数组和数组列表类似,列表允许插入元素并访问元素位置。另外,列表接口在java.util软件包中看到并继承Collection接口。

由于列表是接口继承,因此列表无法创建对象。您将需要一个类来创建对象;那就是Arraylist发挥作用的地方。

这是使用arraylist创建列表对象的示例:

List<Obj> list = new ArrayList<Obj> ();

Save this code

列表接口中的某些操作包括:

  • add(),将元素添加到列表接口;它需要两个参数。
  • add(对象),在列表末尾添加一个元素。
  • add(int索引,对象),在列表中的特定索引中添加一个元素。

这是一个代码段,显示了如何在特定索引中添加元素:

import java.util.*;

class example {

        public static void main(String args[])
        {
                List<String> txt = new ArrayList<>();


                txt.add("Pieces");
                txt.add("Pieces");
                txt.add(2, "Code");

                System.out.println(txt);
        }
}

Save this code

输出:

[Pieces, Pieces, Code]
  • set():更新列表接口;它采用一个参数,列表的索引。

这是一个代码段:

import java.util.*;

class example {


        public static void main(String args[])
        {

                List<String> txt = new ArrayList<>();


                txt.add("Pieces");
                txt.add("Pieces");
                txt.add(2, "Code");

                System.out.println("Initial ArrayList " + txt);

        txt.set(1, "Random");
          System.out.println("Updated ArrayList " + txt);
    }
}

Save this code

输出:

Initial ArrayList [Pieces, Pieces, Code]
Updated ArrayList [Pieces, Random, Code]
  • remove():从列表接口中删除元素;它需要两个参数。
  • 删除(对象):删除列表末尾的元素。如果有多个对象,该方法将删除第一个对象。
  • 删除(int索引,对象):删除列表中特定索引的元素。

这是一个代码段,解释了remove()方法的工作方式:

import java.util.*;

class example {


        public static void main(String args[])
        {

                List<String> txt = new ArrayList<>();


                txt.add("Pieces");
                txt.add("Pieces");
                txt.add(2, "Code");


                System.out.println("Initial ArrayList " + txt);

        txt.remove(1);
        System.out.println("After the Index Removal " + txt);
        txt.remove("Pieces");

        System.out.println("After the Object Removal "
                           + txt);
    }
}

Save this code

输出:

Initial ArrayList [Pieces, Pieces, Code]
After the Index Removal [Pieces, Code]
After the Object Removal [Code]

代码挑战

现在,您知道了数组的基础知识,阵列列表,多维数组和列表,现在该测试您的知识了!本节将在Java中创建一个身份矩阵,以使您对Java中的数组的工作方式有直观的了解。

启动之前,请记住身份矩阵是一个正方形矩阵,其中主对角线的所有元素均为1s,而其他元素为0。另外,关于身份矩阵的关键说明是,如果乘以乘以它,则保持不变。

让我们开始!

创建身份矩阵的逻辑很简单。您需要在行等于矩阵的列并制作另一个位置0的位置中打印1个位置。本指南将创建一个身份矩阵8;您可以使用您认为合适的任何尺寸。

  1. 首先,为行和列创建实例变量。
class Matrix {     
      static int identity_matrix(int num)
        {
                int row, col; 
}

Save this code

  1. 接下来,使用嵌套的for-loops用1s和0s填充矩阵;如果您的行等于您的列,请添加1,否则添加0。然后,打印矩阵。
class Matrix {

        static int identity_matrix(int num)
        {
                int row, col;

                for (row = 0; row < num; row++)
                {
                        for (col = 0; col < num; col++)
                        {
                                if (row == col)
                                        System.out.print( 1+" ");
                                else
                                        System.out.print( 0+" ");
                        }
                        System.out.println();
                }
                return 0;
        }
}

Save this code

  1. 最后,定义身份矩阵的大小。最终结果看起来像这样:
class matrix {

        static int identity_matrix(int num)
        {
                int row, col;

                for (row = 0; row < num; row++)
                {
                        for (col = 0; col < num; col++)
                        {
                                if (row == col)
                                        System.out.print( 1+" ");
                                else
                                        System.out.print( 0+" ");
                        }
                        System.out.println();
                }
                return 0;
        }

        public static void main(String args[])
        {
                int size = 8;
                identity_matrix(size);
        }
}

Save this code

您的输出应该与此相似。

1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1

结论

数组是相同数据类型的值的索引序列,并固定,这限制了其方法。与数组不同,阵列列表不受尺寸和灵活性的限制。

作为软件开发人员,您会比其他数据结构更频繁地遇到数组,因为它们是最直接,最广泛使用的数据结构。

现在,您可以理解使用数组作为数据结构,并且使用它们进行了练习。您可以查看the Java documentation,以了解有关本文提到的其他数据结构的更多信息。