Java中8种常见的数据结构

数组、链表、堆、栈、队列、树、哈希、图

一、数组

1.简述

              数组是一种基本线性结构的数据结构,可以存储基本类型数据或对象,连续的存储空间和

              数组的元素是可以重复的。数组只是存储元素的容器,它不对元素的值做任何限制

              一旦创建,其大小就是固定的,不能动态地增加或减少元素。

2.例子

        2.1基本类型

        2.1.1 定义了一个数组

                int[ ]   arr =  new int[ ];

        2.1.2  通过索引给数组中的每个元素赋值

                arr[0] = 1;         arr[1] = 2;         arr[2] = 3;         arr[3] = 4;         arr[4] = 5;

        2.1.3 通过索引来访问或修改数组中的元素

                 // 访问第一个元素,结果是1        int firstElement = arr[0];      

        // 访问第二个元素,结果是2        int thirdElement = arr[2];

        // 修改数组中的元素 arr[0] = 20; 

        // 将第二个元素修改为10 arr[1] = 10; 

    2.1.在Java中,数组的大小是固定的,不能直接删除元素。但是你可以通过创建一个新的数

        组,然后将原数组中除了第一个元素之外的其他元素复制到新数组中,从而实现删除第一个

        元素的效果。

                // 创建一个新的数组,其长度比原数组小1 int[] newArr = new int[arr.length - 1];

                // 将原数组中除了第一个元素之外的其他元素复制到新数组中

                 System.arraycopy(arr, 1, newArr, 0, newArr.length);

                // 更新arr,使其指向新数组 arr = newArr;

            2.2对象类型

             2.2.1// 创建一个可以存储3个Person对象的数组   

                        Person[] persons = new Person[3];

             2.2.2// 在数组的第三个位置分别存储一个Person对象

                        persons[0] = new Person("张三", 20);

                        persons[1] = new Person("李四", 25);

                        persons[2] = new Person("王五", 30); 

             2.2.3// 访问数组中的第一个元素 Person firstPerson = persons[0]; 

                     // 修改数组中的元素 persons[1] = new Person("赵六", 28); 

二、链表(单链表,双链表,循环链表,双向循环链表):

 1.简述

                链式的线性表,采用链式存储(非连续、非顺序的内存空间),

                链表中的每一个独立的元素被称为结点,故链表由一系列的结点组成。

                每个结点都由两部分组成数据域、指针域

                数据域用来存放当前结点需要存储的数据内容,

                指针域用于存放当前结点的下一个结点的地址。如下图所示:

     生活举例熟悉概念:假如我们需要存放一堆物品,但没有足够大的空间将所有的物品一次性放

                下,此时该如何既放下所有的物品,又能简单的找到所有的物品位置呢?我们可以尝试

                采用如下解决方案:存放物品时,每放置一件物品就在该物品上贴一个小纸条,标明下

                一件物品放在哪里。这样,我们只需要记住第一件物品的位置,从第一件物品上的小纸

                条,就可以找到第二件物品,再根据第二件物品纸条的内容就找到第三件物品。按照这

                个方法依次类推,我们便可以找到所有的物品,这就是所谓的链式存储。

2.例子

        2.1String类型

        2.1.1  定义了一个数组

               LinkedList<String> linkedList = new LinkedList<>();

        2.1.2  // 在链表头部添加元素 linkedList.addFirst("元素0");

                  //添加元素linkedList.add("元素1");

                  // 在链表尾部添加元素 linkedList.addLast("元素4");

         2.1.3// 移除链表头部元素 linkedList.removeFirst();

                // 移除链表尾部元素 linkedList.removeLast();

                //删除第五个元素 linkedList.remove(4);

         2.1.4 使用set(int index, E element)方法来修改链表中的某个元素,

              其中index是元素在链表中的位置(从0开始计数),element是新的元素。

               // 修改链表中第一个元素 linkedList.set(0,"修改元素");

          2.5// 获取链表中第一个元素 Person firstPerson = linkedList.get(0);

            2.2对象类型

             2.2.1 LinkedList<Person> linkedList = new LinkedList<>();

             2.2.2 // 创建Person对象 Person person1 = new Person("张三", 20);

                                                    Person person2 = new Person("李四", 25);

             2.2.3 // 在链表首部添加元素 linkedList.addFirst(person1);

                      // 在链表尾部添加元素 linkedList.addLast(person2);

             2.2.4// 创建Person对象 Person person3 = new Person("王五", 30);

                      // 修改链表中第一个元素 linkedList.set(0, person3);

        

熟悉概念:

1.线性结构:

在Java中,线性结构是一种数据结构,它的元素之间存在一对一的线性关系。

线性结构有两种不同的存储方式:顺序存储和链式存储。

顺序存储的线性表称为顺序表,顺序表中的元素在内存中是连续存储的,例如数组。

链式存储的线性表称为链表,链表中的元素在内存中可以是非连续存储的,

元素节点中存放数据元素以及指向下一个节点的指针。

线性结构有以下几个特点:

  1. 存在唯一的一个被称作“第一个”的元素。
  2. 存在唯一的一个被称作“最后一个”的元素。
  3. 除第一个元素外,其他数据元素均有一个前驱。
  4. 除最后一个元素外,其他数据元素均有一个后继。

在Java中,常见的线性结构包括数组、链表、栈、队列等。

2.内存地址:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值