java LinkedList类详解及实例代码

yizhihongxing

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日

相关文章

  • JSP技术实现动态页面到静态页面的方法

    JSP(JavaServer Pages)是一种基于Java的Web开发技术,可以将动态代码嵌入HTML页面中。而将JSP页面转换为静态页面主要是为了提高页面的访问速度和减少服务器的压力。以下是实现JSP页面转换为静态页面的完整攻略: 步骤一:创建JSP页面 首先,需要创建一个JSP页面,该页面执行动态页面的功能。创建JSP页面的过程类似于创建一个HTML页…

    Java 2023年6月15日
    00
  • MyBatis-Plus 条件查询器的实现

    “MyBatis-Plus 条件查询器的实现”是一个非常重要的话题,它涉及到MyBatis-Plus框架中的核心功能,可以让开发人员更快速地构建和查询数据库。下面我们将详细讲解如何实现MyBatis-Plus的条件查询器。 1. 安装MyBatis-Plus 要使用MyBatis-Plus,首先需要安装它。可以通过Maven或Gradle的依赖来安装它。Ma…

    Java 2023年5月20日
    00
  • SpringMVC 整合SSM框架详解

    本文将介绍SpringMVC与SSM框架的整合。整个过程分为以下几步: 1.创建Maven项目: 首先需要创建Maven项目,可以选择maven-archetype-webapp创建一个Web项目,也可以选择其他适合的模板。 2.引入SpringMVC、MyBatis和其他依赖: 在pom.xml中加入依赖: <dependency> <g…

    Java 2023年5月16日
    00
  • 华为鸿蒙HarmonyOS JavaUI 框架官网文档内容更新:组件开发指南、补充组件开发说明

    华为鸿蒙HarmonyOS JavaUI 框架官网文档更新内容包括组件开发指南和补充组件开发说明。以下是关于这两个方面的详细攻略: 组件开发指南 在HarmonyOS上进行组件开发需要使用Java语言进行开发,需要具备基本的Java语言基础知识和开发工具的使用技巧。 关注HarmonyOS官网文档的更新,获取最新的组件开发指南,阅读开发文档可以帮助我们快速上…

    Java 2023年5月24日
    00
  • SpringBoot集合Mybatis过程解析

    SpringBoot集成Mybatis过程解析 1. 简介 SpringBoot是基于Spring框架的快速应用开发框架,整合了众多好用的组件,非常适合开发中小型项目。而Mybatis则是一个轻量级的ORM框架,可以让我们更加方便地操作数据库。 在本篇攻略中,我们将会详细讲解如何在SpringBoot项目中集成Mybatis,并完成对数据库的CRUD操作。 …

    Java 2023年5月19日
    00
  • 基于SpringMVC的全局异常处理器介绍

    【基于SpringMVC的全局异常处理器介绍】完整攻略 前言 在开发 Web 应用程序时,异常是不可避免的问题。当 Web 应用程序运行时发生异常时,SpringMVC 提供了一种集中处理异常的方式 — 全局异常处理器。本文将详细介绍基于 SpringMVC 的全局异常处理器的使用方法以及示例。 步骤1:新建全局异常处理类 我们需要使用一个能够捕获应用程序…

    Java 2023年5月16日
    00
  • SpringMVC五种类型参数传递及json传递参数

    Spring MVC是一种常用的Web框架,它提供了多种参数传递方式,包括基本类型、对象、集合、数组和JSON等。本文将详细讲解Spring MVC五种类型参数传递及JSON传递参数,并提供两个示例说明。 五种类型参数传递 1. 基本类型参数传递 基本类型参数传递是指将基本类型的值作为请求参数传递给Controller方法。在Spring MVC中,我们可以…

    Java 2023年5月18日
    00
  • 最流行的java后台框架spring quartz定时任务

    下面是最流行的Java后台框架Spring Quartz定时任务的完整攻略: 什么是Spring Quartz定时任务 Spring Quartz定时任务是一款高性能,可靠的定时任务调度框架,并且它完全是在Java中实现的。通过使用Spring Quartz,我们可以轻松地实现各种复杂的任务调度,并且它还支持集群部署,具有很好的扩展性。 基本使用步骤 Spr…

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