java LinkedList类详解及实例代码

Java LinkedList 类详解及实例代码

介绍

Java中的LinkedList类是一个双向链表的实现,是List接口的有序集合。LinkedList类提供了方便的操作链表的方法,可以很容易地实现添加、删除、插入以及访问节点等操作。

以下是创建一个LinkedList的示例:

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

常用方法

以下是一些常用的LinkedList方法:

  1. add(E e) - 在链表末尾添加一个元素
  2. add(int index, E element)- 在链表指定位置添加一个元素
  3. remove() - 删除链表的头元素
  4. remove(int index) - 删除链表中指定位置的元素
  5. get(int index) - 返回链表中指定位置的元素
  6. size() - 返回链表中元素的数量
  7. clear() - 删除链表中的所有元素

以下是示例代码:

LinkedList<String> linkedList = new LinkedList<String>();
linkedList.add("Java");
linkedList.add("Python");
linkedList.add("JavaScript");
linkedList.add("PHP");

//获取链表的元素数
System.out.println("链表元素数量:" + linkedList.size());

//获取链表中指定位置的元素
System.out.println("链表第二个元素:" + linkedList.get(1));

//在链表指定位置添加一个元素
linkedList.add(1, "C++");

//删除链表末尾的元素
linkedList.removeLast();

输出结果:

链表元素数量:4
链表第二个元素:Python

示例说明

示例1 - 使用LinkedList实现LRU Cache

以下示例展示了使用LinkedList实现LRU Cache。

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

class LRUCache {

    private Map<Integer, Integer> cache; //用来存储缓存的键值对
    private LinkedList<Integer> list; //用来存储缓存的键
    private int capacity; //LRU Cache的容量

    public LRUCache(int capacity) {
        this.capacity = capacity;
        cache = new HashMap<Integer, Integer>();
        list = new LinkedList<Integer>();
    }

    public int get(int key) {
        if(cache.containsKey(key)) {
            //将键移动到链表头部
            list.remove((Integer)key);
            list.addFirst(key);
            return cache.get(key);
        } else {
            return -1;
        }
    }

    public void put(int key, int value) {
        if(cache.containsKey(key)) {
            list.remove((Integer)key);
        } else {
            if(cache.size() == capacity) {
                int lastKey = list.removeLast();
                cache.remove(lastKey);
            }
        }
        list.addFirst(key);
        cache.put(key, value);
    }
}

以上代码实现了LRU Cache的基本功能,包括了缓存容量的限制、查找缓存、添加缓存等操作。

示例2 - 使用LinkedList实现栈

以下示例展示了使用LinkedList实现栈。

import java.util.LinkedList;

class Stack<T> {

    private LinkedList<T> list; //用来存储栈中的元素

    public Stack() {
        list = new LinkedList<T>();
    }

    //将一个元素压入栈顶
    public void push(T data) {
        list.addFirst(data);
    }

    //从栈顶弹出一个元素
    public T pop() {
        if(list.isEmpty()) {
            return null;
        } else {
            return list.removeFirst();
        }
    }

    //返回栈顶的元素,但不弹出
    public T peek() {
        if(list.isEmpty()) {
            return null;
        } else {
            return list.getFirst();
        }
    }

    //判断栈是否为空
    public boolean isEmpty() {
        return list.isEmpty();
    }
}

以上代码实现了栈的基本功能,包括了压入元素、弹出元素、判断栈是否为空等操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java LinkedList类详解及实例代码 - Python技术站

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

相关文章

  • 利用Jasypt如何对Spring Boot配置文件加密

    利用Jasypt对Spring Boot配置文件加密的步骤如下: 1. 引入Jasypt依赖 首先在项目的pom.xml文件中引入Jasypt的依赖: <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spri…

    Java 2023年5月20日
    00
  • java多线程实现交通灯管理系统

    Java多线程实现交通灯管理系统 简介 本文将介绍如何使用Java多线程来实现交通灯管理系统。在交通灯管理系统中,灯的颜色会定期切换,而不同灯的切换时间可能不同,所以使用多线程可以很好地模拟交通灯的切换过程。 实现步骤 1. 创建两个类:交通灯和路口 首先,我们需要创建两个类来表示交通灯和路口。一个交通灯可以有几种颜色(红灯、绿灯和黄灯),而一个路口可以有多…

    Java 2023年5月18日
    00
  • SpringBoot文件上传同时接收复杂参数的过程详解

    以下是SpringBoot文件上传同时接收复杂参数的过程详解,包含两条示例。 1. 前置条件 在使用SpringBoot进行文件上传和接收复杂参数之前,需要完成以下步骤: 确定上传文件的存储路径 添加SpringBoot的web和文件上传依赖项 配置multipart文件上传限制 在完成上述步骤后,我们可以开始编写文件上传和接收复杂参数的代码了。 2. 实现…

    Java 2023年5月19日
    00
  • Linux 查看空间使用情况的实例详解

    Linux 查看空间使用情况的实例详解 Linux 文件系统的空间使用率不容忽视。虽然 Linux 操作系统的存储空间非常大,但在服务器运行一段时间后,可能会发现服务器的可用空间急剧减少而百思不得其解。因此,理解如何查看Linux文件系统的空间使用情况是非常有必要的。 在 Linux 中,有许多工具可用于检查和监视文件系统空间使用情况。本文将介绍一些最常用的…

    Java 2023年5月20日
    00
  • Java中Jackson快速入门

    Java中Jackson快速入门 1. 什么是Jackson? Jackson是Java中最常用的处理JSON数据的库之一,它可以将JSON字符串转换为Java对象,或将Java对象转换为JSON字符串。 2. Jackson的使用方法 2.1 添加依赖 在Maven项目中,我们可以通过以下方式添加Jackson的依赖: <dependency>…

    Java 2023年5月19日
    00
  • jsp隐藏关键敏感字段信息只显示前后字段的示例

    要想实现JSP页面中隐藏关键敏感字段信息只显示前后字段,可以采用以下两种方式: 1.使用Java正则表达式 在JSP页面中,可以使用Java的正则表达式函数来替换掉敏感字段中间的字符,从而实现隐藏的效果。示例代码如下所示: <% String sensitiveInfo = "123456789"; String pattern =…

    Java 2023年6月15日
    00
  • SpringBoot注册Filter的两种实现方式

    下面是关于“SpringBoot注册Filter的两种实现方式”的完整攻略。 在SpringBoot中,有两种方式可以注册Filter: 1. 通过@Configuration注解注册Filter 在SpringBoot中,可以通过在@Configuration类中添加@Bean注解的方式注册Filter。示例代码如下: @Configuration pub…

    Java 2023年5月15日
    00
  • SpringBoot项目实现关闭数据库配置和springSecurity

    SpringBoot是一个非常流行的Java Web开发框架,它具有易用、快速开发、健壮性好等优点。在一些场景中我们需要关闭数据库配置或者关闭Spring Security,下面就具体介绍一下如何实现: 关闭数据库配置 在一些场景中,我们并不需要使用数据库,比如开发一个展示页面的网站,这时我们就可以关闭数据库配置。 步骤一:排除数据库依赖 在pom.xml文…

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