Java面向对象基础知识之数组和链表

Java面向对象基础知识之数组和链表

1. 数组和链表区别

数组和链表都是线性数据结构,但它们的存储方式和特点不同。

  • 数组是一种连续的内存存储方式,可以快速访问任何一个元素。但在插入和删除元素时,需要移动大量元素,效率很低,因此不适合插入和删除操作频繁的情况。
  • 链表是一种非连续的内存存储方式,每个元素存储了下一个元素的地址,因此可以快速插入和删除元素。但访问指定位置的元素时需要遍历链表,效率较低。

2. 数组

2.1 定义和初始化数组

使用数组需要先定义一个数组变量,再初始化数组。 定义方式如下:

// 定义一个int类型的数组,长度为10
int[] arr = new int[10]; 

数组初始化有两种方式:

  • 静态初始化:定义数组时赋初值
  • 动态初始化:定义数组后再逐个赋值

静态初始化方式如下:

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

动态初始化方式如下:

int[] arr2 = new int[5];
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3;
arr2[3] = 4;
arr2[4] = 5;

2.2 数组遍历

使用for循环遍历数组。

for(int i=0; i<arr.length; i++){
    System.out.println(arr[i]);
}

2.3 数组排序

可以使用Arrays类中提供的sort方法对数组进行排序。如下所示:

Arrays.sort(arr);

3. 链表

3.1 定义链表

链表由多个节点组成,节点包括两部分内容:数据域和指针域。数据域存储节点的值,指针域存储下一个节点的地址。

定义链表时需要先定义节点类,然后使用节点类定义链表。

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);

node1.next = node2;
node2.next = node3;

3.2 链表遍历

使用while循环遍历链表。

ListNode node = head; // head是链表的头节点
while(node != null){
    System.out.println(node.val);
    node = node.next;
}

3.3 在链表尾部添加节点

首先需要找到链表的尾节点,然后将尾节点的next指针指向新节点。如下:

ListNode tail = head;
while(tail.next != null){
    tail = tail.next;
}
tail.next = new ListNode(val);

4. 示例

4.1 数组示例

下面是一个数组排序的示例。

import java.util.Arrays;

public class ArrayExample {
    public static void main(String[] args) {
        int[] arr = {3,5,1,4,2};
        Arrays.sort(arr);  //排序
        for(int i=0; i<arr.length; i++) {
            System.out.println(arr[i]);  //遍历输出
        }
    }
}

4.2 链表示例

下面是一个在链表尾部添加节点的示例。

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class LinkedListExample {
    public static void main(String[] args) {
        ListNode head = new ListNode(1); //定义链表头节点
        ListNode tail = head;
        for(int i=2;i<=5;i++){ //循环添加节点
            tail.next = new ListNode(i);
            tail = tail.next;
        }
        ListNode node = head; //遍历链表
        while(node != null){
            System.out.println(node.val);
            node = node.next;
        }
    }
}

5. 总结

本文介绍了数组和链表的区别、定义和初始化、遍历、排序、以及链表添加节点等基本操作。在实际的开发中,应根据具体需求选择合适的数据结构。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java面向对象基础知识之数组和链表 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot整合Mybatis与MybatisPlus方法详细讲解

    下面我将为您详细讲解SpringBoot整合Mybatis与MybatisPlus的方法。 1. SpringBoot整合Mybatis 1.1 添加依赖 首先,在pom.xml文件中添加Mybatis和Mybatis-spring-boot-starter的依赖: <dependency> <groupId>org.mybatis.…

    Java 2023年5月19日
    00
  • Java基于线程实现带有滚动效果的Label标签实例

    下面我将详细讲解如何实现Java基于线程实现带有滚动效果的Label标签的完整攻略。 1. 了解需求 在实现这个功能之前,我们需要了解需求,即带有滚动效果的Label标签到底是什么,有什么功能和特点。经过了解,我们知道: 带有滚动效果的Label标签是一种标签,可以显示文字、图片等内容。 它的滚动效果可以是从左到右、从右到左、从上到下、从下到上等四个方向中的…

    Java 2023年6月15日
    00
  • C++字符串的处理详解

    C++字符串的处理详解 在C++中,字符串是一种很重要的数据类型。可以使用以下两种方法来处理字符串: 1. 使用C风格的字符串处理方式 C风格的字符串其实是一个字符数组,字符串的结束标志是’\0’。 字符串的定义: char str[10]; //定义一个长度为10的字符数组作为字符串 字符串的输出: printf("%s", str);…

    Java 2023年5月27日
    00
  • JAVA中String介绍及常见面试题小结

    来一份JAVA中String介绍及常见面试题小结的完整攻略吧。 JAVA中String介绍及常见面试题小结 String是什么 String是JAVA中的一个类,代表字符串类型。字符串就是由0个或多个字符组成的有序字符序列,JAVA中通过String类型来表示字符串。 String的特点 不可变性 String对象一旦被创建,便不能被修改。因此,每个字符串对…

    Java 2023年5月27日
    00
  • jsp自定义标签用法实例详解

    下面我将详细讲解“jsp自定义标签用法实例详解”的完整攻略。 JSP自定义标签概述 JSP自定义标签是一种自定义的标记,它可以让开发者在JSP页面中编写自定义标签,从而实现对JSP页面的自定义扩展。 在JSP页面中,我们可以通过JSP内置标签和标准标签库实现一些常用的功能,但是如果我们需要实现一些定制化的功能,就需要使用自定义标签了。 自定义标签的用法跟普通…

    Java 2023年6月15日
    00
  • JSP中Servlet的Request与Response的用法与区别

    JSP中Servlet的Request和Response是非常重要的概念,它们通过HttpServletRequest和HttpServletResponse来实现。在JSP中,Servlet对象是默认创建而且被调用的,因此学习Servlet的Request和Response对于理解JSP的数据交互和页面跳转非常重要。 一、Servlet Request S…

    Java 2023年6月15日
    00
  • 常见的Java类加载器有哪些?

    我来为你详细讲解一下Java类加载器。 Java类加载器 在Java中,类加载器是用于加载Java类和资源的特殊Java类。Java虚拟机通过它们来动态地加载Java类。Java类加载器是Java技术的核心组成部分,因为它使 Java 的动态实现成为可能。 Java 类加载器是类 Java.lang.ClassLoader 的实例,它负责将类的字节码从文件系…

    Java 2023年5月11日
    00
  • 使用jar包反编译形成pom工程

    使用jar包反编译形成pom工程的完整攻略,可以分为以下步骤: 1. 下载jar包 首先需要下载需要反编译为pom工程的jar包。可以从Maven中央仓库、GitHub等地方获取到,或者是在项目中使用maven build生成的jar包。下载后将该jar包保存至任意目录下。 2. 反编译jar包 反编译jar包可以使用多种工具,例如JD-GUI、Eclips…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部