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日

相关文章

  • Java中关于文件路径读取问题的分析

    下面是关于Java中文件路径读取问题的分析攻略,包括常见问题及解决办法。 问题描述 在Java程序中,读取文件时常会遇到文件路径问题。文件可能位于磁盘的不同位置,如何正确地指定文件路径是很重要的。 解决方法 在解决文件路径问题之前,先了解一下文件路径的分类。 绝对路径与相对路径 绝对路径:从磁盘根目录开始的路径,如 Windows 中的 C:\Users\z…

    Java 2023年5月19日
    00
  • Java 中执行动态表达式语句前中后缀Ognl、SpEL、Groovy、Jexl3

    Ognl Ognl(Object-Graph Navigation Language)是一种表达式语言,特别适用于访问Java对象属性和方法,执行动态表达式。 Ognl表达式的基本语法如下: 运算符 描述 . 执行属性访问 [] 执行表达式 # 引用变量 @ 调用静态方法 $ 用于定义变量 在Java中,可以使用Ognl表达式来访问对象属性和方法,例如: i…

    Java 2023年6月15日
    00
  • Java数组队列及环形数组队列超详细讲解

    Java数组队列及环形数组队列超详细讲解 什么是队列 队列(Queue)是一种先进先出(FIFO, first in first out)的数据结构,常见的队列有数组队列和链式队列两种实现方式。 数组队列 数组队列是一种线性结构,底层使用静态数组来存储数据。队列的头部(front)指向队列头部元素,队列尾(rear)指向队列尾部元素。当有新元素入队时,队列尾…

    Java 2023年5月26日
    00
  • Bootstrap Table从服务器加载数据进行显示的实现方法

    接下来我将为您提供Bootstrap Table从服务器加载数据进行显示的实现方法的完整攻略。 什么是Bootstrap Table? Bootstrap Table是一个非常方便的jQuery插件,可以把表格数据便捷地展示成可排序、可分页、可编辑等功能的表格。Bootstrap Table是基于Bootstrap构建的,它的特点是轻量、易用、响应式、美观。…

    Java 2023年6月15日
    00
  • 详解SpringMVC中的异常处理机制

    详解SpringMVC中的异常处理机制 在SpringMVC中,异常处理是一个非常重要的话题。在Web应用程序中,异常是不可避免的,因此我们需要一种机制来处理它们。本文将详细讲解SpringMVC中的异常处理机制,包括如何定义异常处理器、如何处理异常、如何返回异常信息等。 定义异常处理器 在SpringMVC中,我们可以使用@ControllerAdvice…

    Java 2023年5月18日
    00
  • SpringBoot教程_创建第一个SpringBoot项目

    以下是创建第一个SpringBoot项目的完整攻略,包含两条示例: 一、前置条件 在开始创建SpringBoot项目之前,请确认你已经完成以下步骤: 安装好Java开发环境。建议使用JDK8及以上版本。 安装好Maven构建工具。 二、创建SpringBoot项目 1. 使用Spring Initializr创建项目 首先,我们使用Spring Initia…

    Java 2023年5月15日
    00
  • 浅谈java 数据处理(int[][]存储与读取)

    浅谈Java数据处理(int[][]存储与读取) 在Java中,数组是我们常用的数据结构之一。在某些场景下,我们需要处理的数据可能是一个二维数组,本篇文章将会讲解如何处理这种数据结构,包括如何存储和读取。 存储二维数组 Java中的二维数组可以使用 int[][] 来定义,其可以表示一个矩阵。我们可以通过以下代码来定义一个二维数组: int[][] matr…

    Java 2023年5月26日
    00
  • java中如何实现对类的对象进行排序

    针对 Java 中如何实现对类的对象进行排序,一般有两种常见的方式:实现 Comparable 接口或实现 Comparator 接口。下面会详细介绍这两种方式的实现方法及示例。 实现 Comparable 接口 实现 Comparable 接口的方式是让类自身具备排序能力,可以使用 Java 中的 Arrays.sort() 或 Collections.s…

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