首页 > 编程语言 >Java链表

Java链表

时间:2024-06-23 19:00:45浏览次数:27  
标签:Java linkedList 元素 链表 println 节点 LinkedList

在Java中,链表是一种动态数据结构,它不需要在内存中分配一块连续的空间,而是通过指针将节点连接起来。链表由节点(Node)的集合组成,每个节点包含两部分内容:数据(data)和指向下一个节点的引用(next)。

Java中常见的链表类型有单向链表、双向链表和循环链表:

  1. 单向链表(Singly Linked List):每个节点只有一个指向下一个节点的指针。单向链表的最后一个节点指向null。常用操作包括在链表头部插入节点、在链表尾部插入节点、删除指定节点等。

  2. 双向链表(Doubly Linked List):每个节点包含两个指针,分别指向前一个节点和后一个节点。双向链表可以双向遍历,插入和删除操作更加灵活。

  3. 循环链表(Circular Linked List):尾节点指向头节点,形成闭环。循环链表可以遍历整个链表,常用于实现循环队列等数据结构。

在Java中,可以使用内置的LinkedList类来实现链表操作。除了常见的添加、删除、获取等操作外,LinkedList还提供了一些特殊的方法,如addFirst()、addLast()、offer()、poll()等,可以用于实现队列和栈等数据结构。

另外,自定义链表类也是一种常见的做法。可以定义Node类和LinkedList类,通过这两个类实现链表的基本功能。自定义链表结构可以更好地了解链表的实现原理,进一步学习数据结构和算法。

当使用链表时,可以根据具体需求选择合适的链表类型(如单向链表、双向链表等),然后进行相应的操作。下面是一个简单的示例代码,展示如何使用Java中的LinkedList类来创建、操作和遍历链表:

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        // 创建一个LinkedList实例
        LinkedList<String> linkedList = new LinkedList<>();

        // 添加元素到链表
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Cherry");

        // 显示链表中的元素
        System.out.println("链表中的元素:");
        for(String fruit : linkedList) {
            System.out.println(fruit);
        }

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

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

        // 显示更新后的链表元素
        System.out.println("更新后的链表中的元素:");
        for(String fruit : linkedList) {
            System.out.println(fruit);
        }

        // 删除链表中的指定元素
        linkedList.remove("Banana");

        // 显示最终的链表元素
        System.out.println("最终的链表中的元素:");
        for(String fruit : linkedList) {
            System.out.println(fruit);
        }
    }
}

在上述代码中,首先创建了一个LinkedList实例,并通过add()方法向链表中添加元素。然后使用addFirst()和addLast()方法在链表头部和尾部添加元素。接着使用remove()方法删除指定元素。最后,通过遍历链表,显示更新后和最终的链表元素。

通过这段代码,可以简单了解使用Java中的LinkedList类来创建、操作和遍历链表的基本步骤。实际使用中,可以根据具体需求进行适当调整和扩展

标签:Java,linkedList,元素,链表,println,节点,LinkedList
From: https://blog.csdn.net/2301_81543552/article/details/139754715

相关文章

  • javascript浏览器对象模型
    BOM对象:BOM是浏览器对象模型的简称。JavaScript将整个浏览器窗口按照实现的功能不同拆分成若干个对象;包含:window对象、history对象、location对象和document对象等window对象:常用方法:1.prompt();显示可提示用户输入的对话框window.prompt("请输入您的名字");返......
  • Java语言常用注解(Annotation)收录
    Java语言常用注解(Annotation)收录注解(Annotation)是一种用于在代码中插入元数据的方式,以便为编译器、开发工具或运行时环境提供信息。自Java5引入以来,注解已成为Java平台不可或缺的一部分,用于各种场景,如编译时检查、框架集成、依赖注入等。下面收录了一些开发过程中常用......
  • 基于JavaSpringBoot+Vue+uniapp技术的微信小程序鲜花商城购物系统设计与实现
    博主介绍:硕士研究生,专注于Java技术领域开发与管理,以及毕业项目实战✌    从事基于javaBS架构、CS架构、c/c++编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经验。    先后担任过技术总监、部门经理、......
  • [Java并发]Thread
    Java开启线程的四种方式实现runnable接口这个方法有一个很大的缺点就是重写的run方法是没有返回值的,如果想要返回值,需要使用下面的方法publicclassRunnableImplimplementsRunnable{/**创建步骤如下:*1,定义Runnable接口的实现类,并且实现run方法,这个方法......
  • JAVA类与对象的基础概念(JAVA基础)
    类的定义1.定义:类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象2.属性:用于定义该类或该类对象包含的数据或者说静态特征3.初始化∶定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化4.方法:用于定义该类或该类实例的行为特征和功能实现......
  • [Java并发]ConcurrentHashMap
    ConcurrentHashMapHashMap和ConcurrentHashMap的区别主要区别就是hashmap线程不安全,ConcurrentHashMap线程安全HashMap线程不安全,有以下两个问题put覆盖问题比如有两个线程A和B,首先A希望插入一个key-value对到HashMap中,首先计算记录所要落到的桶的索引坐标,然后获取到该桶......
  • [Java基础]String
    String常量池/运行时常量池java类编译之后生成的.class文件包含三部分信息,类的基本信息,常量池,方法的定义通过javap-vxxxx.class命令可以看到Constantpool:#1=Methodref#2.#3//java/lang/Object."<init>":()V#2=Class#4......
  • Java Stream 8 API
    动态多字段排序动态多字段排序假设我们有一个Person类,希望能够按照age和name进行动态排序。我们使用上述代码生成一个组合比较器来完成多字段排序。1.定义Person类java复制代码importjava.util.HashMap;importjava.util.Map;publicclassPerson{privateM......
  • vscode开发纯java项目兼容eclipse
    最近想使用vscode作为开发工具逐步替代eclipse,但是不影响eclipse作为项目管理的配置。以下是踩坑过程:1、项目之间的依赖。如主projectA依赖projectB,projectB并不是已jar包的形式,而是项目的形式在eclipse中的,eclipse有个很方便的功能是直接把项目添加进依赖中,vscode貌似找不到直接......
  • Java基础面试题下
    #Java基础面试题(下)>lecture:波哥#一、String相关面试题##1.为什么String在java中是不可变的?-如果不是不可变的:这种情况根本不可能,因为在字符串池的情况下,一个字符串对象/文字,例如“Test”已被许多参考变量引用,因此如果其中任何一个更改了值,其他参数将自动受到影......