[{"data":1,"prerenderedAt":6322},["ShallowReactive",2],{"search-docs":3,"doc-\u002Fother\u002Fjava\u002Fcollection\u002Flist-linkedlist":886},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,159,162,165,169,172,175,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,269,273,277,281,285,288,291,294,298,301,304,307,310,313,316,319,322,325,329,332,336,340,344,348,352,356,359,362,365,368,371,374,377,380,383,386,389,393,396,399,402,405,408,411,414,417,420,424,428,432,435,438,442,446,450,454,458,462,466,470,474,477,480,483,487,491,494,497,500,504,507,511,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,579,583,587,591,595,599,603,606,610,614,617,620,623,626,629,633,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,716,720,724,728,732,736,740,744,748,752,756,760,764,768,772,775,779,783,787,790,793,796,799,802,805,808,811,814,818,822,825,829,832,835,838,841,844,848,851,854,858,862,865,869,873,876,879,882],{"path":5,"title":6,"description":7},"\u002Fabout\u002Fauthor","作者相关","只想纯粹的做一个程序员...",{"path":9,"title":10,"description":11},"\u002Fabout\u002Fjourney","心路历程","",{"path":13,"title":14,"description":15},"\u002Fai\u002Fagent\u002Fframeworks","Agent 框架","主流 Agent 框架：LangChain、LlamaIndex、AutoGen、CrewAI",{"path":17,"title":18,"description":19},"\u002Fai\u002Fagent\u002Fhooks","Agent Hooks 与自动化","Claude Agent 的 Hooks 生命周期、事件类型、典型自动化场景",{"path":21,"title":22,"description":23},"\u002Fai\u002Fagent\u002Fintroduction","AI Agent 概述","AI Agent 核心概念：感知、规划、执行、记忆",{"path":25,"title":26,"description":27},"\u002Fai\u002Fagent\u002Fpractice","Agent 实战","AI Agent 实战：构建自主任务执行系统",{"path":29,"title":30,"description":31},"\u002Fai\u002Fagent\u002Fsdk","Claude Agent SDK 开发","使用 Claude Agent SDK 构建自定义 AI Agent：架构、API、生命周期",{"path":33,"title":34,"description":35},"\u002Fai\u002Fagent\u002Fsubagents","Subagents 子代理","用 Subagents 分解复杂任务、并发执行、隔离上下文",{"path":37,"title":38,"description":39},"\u002Fai\u002Fagent\u002Ftool-use","工具调用","AI Agent 工具调用：Function Calling、Tool Use 原理与实践",{"path":41,"title":42,"description":43},"\u002Fai\u002Ffundamentals\u002Fdeep-learning","深度学习入门","深度学习基础知识：前向传播、反向传播、损失函数、优化器",{"path":45,"title":46,"description":47},"\u002Fai\u002Ffundamentals\u002Fml-basics","机器学习基础","机器学习核心概念：监督学习、无监督学习、强化学习",{"path":49,"title":50,"description":51},"\u002Fai\u002Ffundamentals\u002Fneural-networks","神经网络原理","神经网络架构：CNN、RNN、注意力机制",{"path":53,"title":54,"description":55},"\u002Fai\u002Fgetting-started","AI 学习路线","AI 技术学习路线图，从基础到实战的完整指南",{"path":57,"title":58,"description":59},"\u002Fai\u002Fllm\u002Ffine-tuning","模型微调","大模型微调技术：LoRA、QLoRA、全量微调、RLHF",{"path":61,"title":62,"description":63},"\u002Fai\u002Fllm\u002Fintroduction","大模型概述","大语言模型发展历程、核心能力与主流模型对比",{"path":65,"title":66,"description":67},"\u002Fai\u002Fllm\u002Flocal-deploy","本地部署","大模型本地部署：Ollama、vLLM、llama.cpp",{"path":69,"title":70,"description":71},"\u002Fai\u002Fllm\u002Ftransformer","Transformer 架构","Transformer 架构详解：自注意力机制、位置编码、多头注意力",{"path":73,"title":74,"description":75},"\u002Fai\u002Fmcp\u002Fclient","MCP Client 开发","MCP Client 开发指南：连接、调用、集成",{"path":77,"title":78,"description":79},"\u002Fai\u002Fmcp\u002Fdebugging","MCP 调试与排错","MCP Server 开发与集成过程中的常见问题、日志分析、诊断工具",{"path":81,"title":82,"description":83},"\u002Fai\u002Fmcp\u002Fintroduction","MCP 概述","Model Context Protocol 协议概述：架构、核心概念、应用场景",{"path":85,"title":86,"description":87},"\u002Fai\u002Fmcp\u002Fserver","MCP Server 开发","MCP Server 开发指南：资源、工具、提示词的实现",{"path":89,"title":90,"description":91},"\u002Fai\u002Fmcp\u002Ftools","MCP Tools 深入","深入理解 MCP Tools：与 Resources\u002FPrompts 的差异、Schema 设计、Annotations 与权限控制",{"path":93,"title":94,"description":95},"\u002Fai\u002Fprompt\u002Fadvanced","高级 Prompt 模式","高级 Prompt 设计模式：Tree-of-Thought、自我反思、多轮对话策略",{"path":97,"title":98,"description":99},"\u002Fai\u002Fprompt\u002Fbasics","Prompt 基础","Prompt Engineering 入门：基本概念、角色设定、输出格式控制",{"path":101,"title":102,"description":103},"\u002Fai\u002Fprompt\u002Ftechniques","提示词技巧","常用提示词技巧：Few-shot、Chain-of-Thought、ReAct",{"path":105,"title":106,"description":107},"\u002Fai\u002Frag\u002Fembedding","文本嵌入","文本嵌入模型：Embedding 原理、模型选择、相似度计算",{"path":109,"title":110,"description":111},"\u002Fai\u002Frag\u002Fintroduction","RAG 概述","检索增强生成（RAG）架构原理、优势与应用场景",{"path":113,"title":114,"description":115},"\u002Fai\u002Frag\u002Fpractice","RAG 实战","RAG 应用实战：文档问答系统、知识库搭建",{"path":117,"title":118,"description":119},"\u002Fai\u002Frag\u002Fvector-database","向量数据库","主流向量数据库对比：Milvus、Pinecone、Chroma、Weaviate",{"path":121,"title":122,"description":123},"\u002Fai\u002Fskills\u002Fbest-practices","Skill 最佳实践","编写高质量 Skill 的设计原则、常见陷阱与优化技巧",{"path":125,"title":126,"description":127},"\u002Fai\u002Fskills\u002Fcreating","创建自定义 Skill","从零编写一个可被 Agent 自动发现和调用的 Skill",{"path":129,"title":130,"description":131},"\u002Fai\u002Fskills\u002Fintroduction","Agent Skills 概述","Claude Agent Skills 概念、工作原理、与 Tools\u002FMCP 的区别",{"path":133,"title":134,"description":135},"\u002Fgolang\u002Fadvanced\u002Fconcurrency","Go - 并发深入","深入理解 Go 并发编程的核心机制。",{"path":137,"title":138,"description":139},"\u002Fgolang\u002Fadvanced\u002Fgc","Go - 垃圾回收","理解 Go 的垃圾回收机制，掌握 GC 调优方法。",{"path":141,"title":142,"description":143},"\u002Fgolang\u002Fadvanced\u002Fgmp","Go - GMP 调度模型","GMP 是 Go 运行时调度器的核心模型，理解它对于编写高性能 Go 程序至关重要。",{"path":145,"title":146,"description":147},"\u002Fgolang\u002Fadvanced\u002Fgo-concurrency","Go - 并发编程","Go 的并发是其核心特性之一，通过 Goroutine 和 Channel 实现。",{"path":149,"title":150,"description":151},"\u002Fgolang\u002Fadvanced\u002Fmemory","Go - 内存模型","理解 Go 的内存分配机制和内存模型。",{"path":153,"title":154,"description":155},"\u002Fgolang\u002Fadvanced\u002Fprofiling","Go - 性能分析","掌握 Go 的性能分析工具：pprof、trace、benchmark。",{"path":157,"title":158,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-basic","Go - 基础语法",{"path":160,"title":161,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-composite","Go - 复合类型",{"path":163,"title":164,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-control","Go - 流程控制",{"path":166,"title":167,"description":168},"\u002Fgolang\u002Fcore\u002Fgo-error","Go - 错误处理","Go 使用显式的错误返回值来处理错误，而不是异常机制。",{"path":170,"title":171,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-function","Go - 函数",{"path":173,"title":174,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-install","Go - 环境搭建",{"path":176,"title":177,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-interface","Go - 接口",{"path":179,"title":180,"description":181},"\u002Fgolang\u002Fcore\u002Fgo-module","Go - 包管理","Go Modules 是 Go 1.11 引入的官方依赖管理方案，Go 1.16 后成为默认模式。",{"path":183,"title":184,"description":185},"\u002Fgolang\u002Fdistributed\u002Fgrpc","Go - gRPC","gRPC 是 Google 开发的高性能 RPC 框架，使用 Protocol Buffers 作为序列化协议。",{"path":187,"title":188,"description":189},"\u002Fgolang\u002Fdistributed\u002Fmicroservice","Go - 微服务","微服务架构的核心组件：服务发现、负载均衡、熔断降级。",{"path":191,"title":192,"description":193},"\u002Fgolang\u002Fdistributed\u002Fmq","Go - 消息队列","使用 Go 操作 Kafka 和 RabbitMQ。",{"path":195,"title":196,"description":197},"\u002Fgolang\u002Fdistributed\u002Fredis","Go - Redis","使用 go-redis 操作 Redis，实现缓存、分布式锁等功能。",{"path":199,"title":200,"description":201},"\u002Fgolang\u002Fengineering\u002Fconfig","Go - 配置管理","使用 viper 进行配置管理，支持多种配置格式和配置中心。",{"path":203,"title":204,"description":205},"\u002Fgolang\u002Fengineering\u002Fdocker","Go - Docker 部署","使用 Docker 容器化部署 Go 应用。",{"path":207,"title":208,"description":209},"\u002Fgolang\u002Fengineering\u002Fkubernetes","Go - Kubernetes 部署","在 Kubernetes 上部署和管理 Go 应用。",{"path":211,"title":212,"description":213},"\u002Fgolang\u002Fengineering\u002Flogging","Go - 日志系统","使用 zap 和 logrus 构建高性能结构化日志系统。",{"path":215,"title":216,"description":217},"\u002Fgolang\u002Fengineering\u002Ftesting","Go - 单元测试","Go 内置了强大的测试框架，掌握测试是编写高质量代码的基础。",{"path":219,"title":220,"description":221},"\u002Fgolang\u002Fstdlib\u002Fbufio","bufio","在 Go 语言中，bufio 包提供了带缓冲的 I\u002FO 操作，能够提高读写性能。以下是一些常用的 bufio 包 API 及其详细说明：",{"path":223,"title":224,"description":225},"\u002Fgolang\u002Fstdlib\u002Fcontainer","container","在Go语言标准库中，container 包提供了几种常用的数据结构实现，这些数据结构对于高效地管理和操作数据非常有用。以下是 container 包中主要的数据结构：",{"path":227,"title":228,"description":229},"\u002Fgolang\u002Fstdlib\u002Fcrypto","crypto","在 Go 语言中，crypto 包提供了一组用于加密和解密的功能。以下是一些常用的 crypto 包及其子包的 API 及其详细说明：",{"path":231,"title":232,"description":233},"\u002Fgolang\u002Fstdlib\u002Fencoding-csv","encoding\u002Fcsv","在 Go 语言中，encoding\u002Fcsv 包提供了对 CSV（逗号分隔值）文件进行读写的功能。以下是一些常用的 encoding\u002Fcsv 包的 API 及其详细说明：",{"path":235,"title":236,"description":237},"\u002Fgolang\u002Fstdlib\u002Fencoding-json","encoding\u002Fjson","在 Go 语言中，encoding\u002Fjson 包提供了对 JSON 数据进行编码和解码的功能。以下是一些常用的 encoding\u002Fjson 包的 API 及其详细说明：",{"path":239,"title":240,"description":241},"\u002Fgolang\u002Fstdlib\u002Fencoding-xml","encoding\u002Fxml","在 Go 语言中，encoding\u002Fxml 包提供了对 XML 数据进行编码和解码的功能。以下是一些常用的 encoding\u002Fxml 包的 API 及其详细说明：",{"path":243,"title":244,"description":245},"\u002Fgolang\u002Fstdlib\u002Fflag","flag","在Go语言中，flag 包是用于处理命令行参数的标准库，它提供了一种简单而直接的方式来解析和使用命令行参数。下面是关于 flag 包的一些基本介绍和常用功能：",{"path":247,"title":248,"description":249},"\u002Fgolang\u002Fstdlib\u002Ffmt","fmt","在 Go 语言的标准库中，fmt 包是非常重要的，它提供了处理格式化输入和输出的基本工具。以下是一些 fmt 包内常用的API：",{"path":251,"title":252,"description":253},"\u002Fgolang\u002Fstdlib\u002Fhttp","net\u002Fhttp","在 Go 语言中，net\u002Fhttp 包提供了用于构建 HTTP 客户端和服务器的强大工具。以下是一些常用的 net\u002Fhttp 包的 API 及其详细说明：",{"path":255,"title":256,"description":257},"\u002Fgolang\u002Fstdlib\u002Fio","io","在 Go 语言中，io 包提供了基本的输入输出功能。以下是一些常用的 io 包的 API 及其详细说明：",{"path":259,"title":260,"description":261},"\u002Fgolang\u002Fstdlib\u002Flog","log","在 Go 语言中，log 包提供了简单的日志记录功能。以下是一些常用的 log 包的 API 及其详细说明：",{"path":263,"title":264,"description":265},"\u002Fgolang\u002Fstdlib\u002Fmath","math","在 Go 语言中，math 包提供了基本的数学函数和常量。以下是一些常用的 math 包的 API 及其详细说明：",{"path":267,"title":268,"description":11},"\u002Fgolang\u002Fstdlib\u002Fnet","net",{"path":270,"title":271,"description":272},"\u002Fgolang\u002Fstdlib\u002Fos","os","在Go语言中，os 包是一个非常重要且常用的标准库，它提供了与操作系统交互的功能，包括文件操作、环境变量管理、进程管理等。下面是一些 os 包中常用的功能和API：",{"path":274,"title":275,"description":276},"\u002Fgolang\u002Fstdlib\u002Fsort","order","在 Go 语言中，sort 包提供了对切片和用户定义的集合进行排序的函数。它实现了常见的排序算法，如快速排序（Quicksort）和堆排序（Heapsort），并且为自定义集合提供了接口，使得用户可以根据特定的需求进行排序。",{"path":278,"title":279,"description":280},"\u002Fgolang\u002Fstdlib\u002Fstrconv","strconv","在 Go 语言中，strconv 包提供了字符串和基本数据类型之间的转换函数，例如将整数转换为字符串、字符串转换为整数，以及其他类型之间的转换。这些功能非常有用，特别是在处理用户输入或从外部数据源读取数据时。",{"path":282,"title":283,"description":284},"\u002Fgolang\u002Fstdlib\u002Ftime","time","在 Go 语言中，time 包提供了处理时间和日期的功能。以下是一些常用的 time 包的 API 及其详细说明：",{"path":286,"title":287,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Ferror","Gin - 错误处理",{"path":289,"title":290,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Ffile","Gin - 文件处理",{"path":292,"title":293,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Fmiddleware","Gin - 中间件",{"path":295,"title":296,"description":297},"\u002Fgolang\u002Fweb\u002Fgin\u002Fquickstart","Gin - 快速开始","Gin 是目前最流行的 Go Web 框架，以高性能和简洁 API 著称。",{"path":299,"title":300,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Frequest","Gin - 请求处理",{"path":302,"title":303,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Fresponse","Gin - 响应处理",{"path":305,"title":306,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Frouter","Gin - 路由",{"path":308,"title":309,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Fvalidation","Gin - 参数校验",{"path":311,"title":312,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fassociation","GORM - 关联关系",{"path":314,"title":315,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fcrud","GORM - CRUD 操作",{"path":317,"title":318,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fmodel","GORM - 模型定义",{"path":320,"title":321,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fperformance","GORM - 日志与性能",{"path":323,"title":324,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fquery","GORM - 高级查询",{"path":326,"title":327,"description":328},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fquickstart","GORM - 快速开始","GORM 是 Go 语言最流行的 ORM 库，功能强大，使用简单。",{"path":330,"title":331,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Ftransaction","GORM - 事务与 Hook",{"path":333,"title":334,"description":335},"\u002Finterview\u002Fbasic","计算机基础面经","本章节汇总了面试中常见的通用技术概念，不局限于特定语言或数据库，是考察技术内功的关键考点。",{"path":337,"title":338,"description":339},"\u002Finterview\u002Fgolang","Golang 面试题","Go 语言面试高频考点，覆盖基础语法、数据结构、并发编程、内存管理、GC、调度器等核心知识。",{"path":341,"title":342,"description":343},"\u002Finterview\u002Fk8s","Kubernetes 面试题","Kubernetes（K8s）面试高频考点，覆盖架构原理、核心资源、网络存储、调度策略、运维监控等核心知识。",{"path":345,"title":346,"description":347},"\u002Finterview\u002Fmysql","MySQL 面试题","MySQL 数据库面试高频考点，覆盖索引、事务、锁、优化、主从复制等核心知识。",{"path":349,"title":350,"description":351},"\u002Finterview\u002Fredis","Redis 面试题","Redis 面试高频考点，覆盖数据结构、持久化、集群、缓存一致性、性能优化等核心知识。",{"path":353,"title":354,"description":355},"\u002Finterview\u002Frocketmq","RocketMQ 面试题","RocketMQ 面试高频考点，覆盖消息模型、可靠性、顺序消息、事务消息、存储与高可用等核心知识。",{"path":357,"title":358,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-arraylist","List - ArrayList 源码解析",{"path":360,"title":361,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-linkedlist","List - LinkedList 源码解析",{"path":363,"title":364,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-stack","List - Satck源码解析",{"path":366,"title":367,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-vectore","List - Vector 源码解析",{"path":369,"title":370,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fmap-hashmap","Map - HashMap 源码解析",{"path":372,"title":373,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fmap-linkedhashmap","Map - LinkedHashMap 源码解析",{"path":375,"title":376,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fmap-treemap","Map - TreeMap 源码解析",{"path":378,"title":379,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fqueue-deque","Queue - Deque 接口解析",{"path":381,"title":382,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fqueue-queue","Queue - Queue 接口解析",{"path":384,"title":385,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fset-hashset","Set - HashSet源码解析",{"path":387,"title":388,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fset-linkedhashset","Set - LinkedHashSet 源码解析",{"path":390,"title":391,"description":392},"\u002Fother\u002Fjava\u002Fcollection\u002Fset-treeset","Set - TreeSet源码解析","TreeSet 是一个 Set 集合接口的实现类，与 HashSet 类似，其底层也是通过维护了一个 TreeMap 对象来封装了一些实现方法，故本篇不再对 TreeSet 的底层原理进行详细说明，仅对常用 API 做简单介绍，如需了解 TreeMap 的底层实现原理，请移步 Map - HashMap 源码解析",{"path":394,"title":395,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fannotation","Java核心 - 注解",{"path":397,"title":398,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fbasic-grammar","Java核心 - 基础语法",{"path":400,"title":401,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fclass-and-object","Java核心 - 面向对象",{"path":403,"title":404,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fcommon-classes","Java核心 - 常用类",{"path":406,"title":407,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fexception","Java核心 - 异常处理",{"path":409,"title":410,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fgenerics","Java核心 - 泛型",{"path":412,"title":413,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fjdk-env-path","Java核心 - 环境搭建",{"path":415,"title":416,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Freflection","Java核心 - 反射",{"path":418,"title":419,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fstring","Java核心 - String 字符串",{"path":421,"title":422,"description":423},"\u002Fother\u002Fjava\u002Fio\u002Fbuffer-stream","Java IO - 缓冲流","缓冲流是对基本流的包装，通过内置缓冲区减少系统调用次数，大幅提升读写效率。",{"path":425,"title":426,"description":427},"\u002Fother\u002Fjava\u002Fio\u002Fbyte-stream","Java IO - 字节流","字节流是 Java IO 中最基本的流类型，以字节（byte）为单位进行数据读写，可以处理任意类型的文件。",{"path":429,"title":430,"description":431},"\u002Fother\u002Fjava\u002Fio\u002Fchar-stream","Java IO - 字符流","字符流以字符为单位进行读写，专门用于处理文本文件。相比字节流，字符流能够正确处理字符编码，避免中文乱码问题。",{"path":433,"title":434,"description":11},"\u002Fother\u002Fjava\u002Fio\u002Ffile","Java IO - File 类",{"path":436,"title":437,"description":11},"\u002Fother\u002Fjava\u002Fio\u002Fio-stream-system","Java IO - IO流概述",{"path":439,"title":440,"description":441},"\u002Fother\u002Fjava\u002Fio\u002Fnio","Java IO - NIO","NIO（New IO）是 JDK 1.4 引入的新 IO 模型，提供了更高效的 IO 操作方式，支持非阻塞 IO 和多路复用。",{"path":443,"title":444,"description":445},"\u002Fother\u002Fjava\u002Fjvm\u002Fclass-loading","类加载机制","类加载机制是 JVM 将 .class 文件加载到内存，并对数据进行校验、转换解析和初始化，最终形成可被 JVM 直接使用的 Java 类型的过程。",{"path":447,"title":448,"description":449},"\u002Fother\u002Fjava\u002Fjvm\u002Fgarbage-collection","垃圾回收","垃圾回收（Garbage Collection，GC）是 JVM 自动管理内存的机制，负责回收不再使用的对象所占用的内存。",{"path":451,"title":452,"description":453},"\u002Fother\u002Fjava\u002Fjvm\u002Fjvm-memory","JVM 内存结构","JVM 在执行 Java 程序时，会把它管理的内存划分为若干个不同的数据区域。这些区域有各自的用途、创建和销毁时间。",{"path":455,"title":456,"description":457},"\u002Fother\u002Fjava\u002Fjvm\u002Fjvm-tuning","JVM 调优","JVM 调优是优化 Java 应用性能的重要手段，主要包括参数配置、性能监控和问题排查。",{"path":459,"title":460,"description":461},"\u002Fother\u002Fjava\u002Fthread\u002Fatomic","原子类","Java 原子类（Atomic Classes）提供了一种无锁的线程安全方式，基于 CAS（Compare-And-Swap）操作实现。",{"path":463,"title":464,"description":465},"\u002Fother\u002Fjava\u002Fthread\u002Fcompletable-future","CompletableFuture","CompletableFuture 是 JDK 8 引入的异步编程工具，实现了 Future 和 CompletionStage 接口，支持函数式编程和链式调用。",{"path":467,"title":468,"description":469},"\u002Fother\u002Fjava\u002Fthread\u002Fconcurrent-collections","并发集合","Java 并发包提供了多种线程安全的集合类，用于替代传统的同步集合（如 Collections.synchronizedList）。",{"path":471,"title":472,"description":473},"\u002Fother\u002Fjava\u002Fthread\u002Fconcurrent-utils","并发工具类","Java 并发包提供了多种实用的并发工具类，用于控制线程之间的协调与同步。",{"path":475,"title":476,"description":11},"\u002Fother\u002Fjava\u002Fthread\u002Fsynchronized-lock","同步机制",{"path":478,"title":479,"description":11},"\u002Fother\u002Fjava\u002Fthread\u002Fthread-basic","线程基础",{"path":481,"title":482,"description":11},"\u002Fother\u002Fjava\u002Fthread\u002Fthread-pool","线程池",{"path":484,"title":485,"description":486},"\u002Fother\u002Fspring-series\u002Fspring\u002Fannotations-beans","Spring - 基于注解管理Bean","从 Java 5 开始，Java 增加了对注解（Annotation）的支持，它是代码中的一种特殊标记，可以在编译、类加载和运行时被读取，执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下，在源代码中嵌入补充信息。",{"path":488,"title":489,"description":490},"\u002Fother\u002Fspring-series\u002Fspring\u002Fimplement-ioc","Spring - 原理手写IoC","Spring 框架的 IOC 是基于 Java 反射机制实现的，在学习手写 IoC 之前，你需要具备一定的 Java 反射相关的知识，参考本站内的 Java 教程。",{"path":492,"title":493,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fintroduction-case","Spring - 入门案例",{"path":495,"title":496,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-aop","Spring - 面向切面AOP",{"path":498,"title":499,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-aot","Spring - AOT提前编译",{"path":501,"title":502,"description":503},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-data-validation","Spring - 数据校验","在开发中，我们经常遇到参数校验的需求，比如用户注册的时候，要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式，我们会把校验的代码和真正的业务处理逻辑耦合在一起，而且如果未来要新增一种校验逻辑也需要在修改多个地方。而spring validation允许通过注解的方式来定义对象校验规则，把校验和业务逻辑分离开，让代码编写更加方便。Spring Validation其实就是对Hibernate Validator进一步的封装，方便在Spring中使用。",{"path":505,"title":506,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-i18n","Spring - 国际化i18n",{"path":508,"title":509,"description":510},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-ioc","Spring - IOC容器","IoC 是 Inversion of Control 的简写，译为“控制反转”，它不是一门技术，而是一种设计思想，是一个重要的面向对象编程法则，能够指导我们如何设计出松耦合、更优良的程序。",{"path":512,"title":513,"description":514},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-junit","Spring - 单元测试JUnit","在之前的测试方法中，几乎都能看到以下的两行代码：",{"path":516,"title":517,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-resources","Spring - 资源操作",{"path":519,"title":520,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-summarize","Spring - Spring概述",{"path":522,"title":523,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-transaction","Spring - 事务",{"path":525,"title":526,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fxml-beans","Spring - 基于XML管理Bean",{"path":528,"title":529,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-config","SpringBoot - 配置详解",{"path":531,"title":532,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-data","SpringBoot - 数据访问",{"path":534,"title":535,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-quickstart","SpringBoot - 快速入门",{"path":537,"title":538,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-web","SpringBoot - Web 开发",{"path":540,"title":541,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-config","SpringCloud - 配置中心",{"path":543,"title":544,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-discovery","SpringCloud - 服务注册与发现",{"path":546,"title":547,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-feign","SpringCloud - 服务调用",{"path":549,"title":550,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-gateway","SpringCloud - 服务网关",{"path":552,"title":553,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-introduction","SpringCloud - 微服务概述",{"path":555,"title":556,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-sentinel","SpringCloud - 服务保护",{"path":558,"title":559,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-databind","SpringMVC - 数据绑定与转换",{"path":561,"title":562,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-exception","SpringMVC - 异常处理",{"path":564,"title":565,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-interceptor","SpringMVC - 拦截器",{"path":567,"title":568,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-introduction","SpringMVC - 简介与环境搭建",{"path":570,"title":571,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-request","SpringMVC - 请求处理",{"path":573,"title":574,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-response","SpringMVC - 响应处理",{"path":576,"title":577,"description":578},"\u002Fproject\u002Frocket-leaf\u002Farchitecture","项目架构","Rocket-Leaf 的目录结构、模块划分、数据流向，以及各层之间的依赖关系。",{"path":580,"title":581,"description":582},"\u002Fproject\u002Frocket-leaf\u002Fbackend-layers","后端分层设计","Rocket-Leaf 的 model \u002F rocketmq \u002F service 三层结构，以及服务之间的依赖关系与设计取舍。",{"path":584,"title":585,"description":586},"\u002Fproject\u002Frocket-leaf\u002Fclient-manager","RocketMQ 客户端管理器","AdminClientManager 的多客户端池、默认连接懒加载、自动重连重试的设计与实现。",{"path":588,"title":589,"description":590},"\u002Fproject\u002Frocket-leaf\u002Fencryption","连接信息加密存储","AES-256-GCM + SHA-256 字段级派生密钥的实现，以及如何在不破坏兼容性的前提下为历史明文数据做透明迁移。",{"path":592,"title":593,"description":594},"\u002Fproject\u002Frocket-leaf\u002Ffrontend","前端结构与类型绑定","React + Vite 目录组织、自动生成的 Wails 绑定、api 薄封装与自定义 hooks 的职责划分。",{"path":596,"title":597,"description":598},"\u002Fproject\u002Frocket-leaf","项目简介","Rocket-Leaf 是一款基于 Wails v3 构建的跨平台 RocketMQ 桌面管理客户端，Go 后端 + React 前端。本文档系列拆解它的架构与关键实现。",{"path":600,"title":601,"description":602},"\u002Fproject\u002Frocket-leaf\u002Fwails-v3","Wails v3 入门","Wails v3 的核心概念、Service 绑定机制，以及 Rocket-Leaf 是如何用它把 Go 后端和 React 前端打通的。",{"path":604,"title":605,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-basic","Docker - 入门基础",{"path":607,"title":608,"description":609},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-compose","Docker - Compose","在部署应用时，常常使用到不止一个容器，那么在部署容器的时候就需要一个一个进行部署，这样的部署过程也相对来说比较繁琐复杂，也容易出问题，那么有没有一种更为简单的方法呢？",{"path":611,"title":612,"description":613},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-container-connection","Docker - 容器互联","在上一个章节中我们学习了 Docker 容器的端口映射，可以将 Docker 容器和本地以及网络中的端口进行连接起来。",{"path":615,"title":616,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-dockerfile","Docker - Dockerfile",{"path":618,"title":619,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-helloworld","Docker - HelloWorld",{"path":621,"title":622,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-install","Docker - 安装",{"path":624,"title":625,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-introduce","Docker - 简介",{"path":627,"title":628,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-object","Docker - 镜像、容器、仓库",{"path":630,"title":631,"description":632},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-warehouse","Docker - 仓库管理","仓库是集中存放资源的地方，代码仓库是存放代码的，那么Docker 中的仓库就是存放 Docker 镜像的。",{"path":634,"title":635,"description":636},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-web-containers","Docker - WEB应用实例","在之前的章节中，仅对普通容器进行了演示，但在实际中常常使用到 Docker 容器中的 WEB 应用程序。",{"path":638,"title":639,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-config","Kubernetes - ConfigMap 与 Secret",{"path":641,"title":642,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-helm","Kubernetes - Helm 包管理",{"path":644,"title":645,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-install","Kubernetes - 集群安装",{"path":647,"title":648,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-introduction","Kubernetes - 简介与架构",{"path":650,"title":651,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-kubectl","Kubernetes - kubectl 命令行工具",{"path":653,"title":654,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-monitoring","Kubernetes - 监控与日志",{"path":656,"title":657,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-network-security","Kubernetes - 网络与安全",{"path":659,"title":660,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-service","Kubernetes - Service 与 Ingress",{"path":662,"title":663,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-storage","Kubernetes - 持久化存储",{"path":665,"title":666,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-workload","Kubernetes - 工作负载资源",{"path":668,"title":669,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-bash","Linux - Bash 基础语法",{"path":671,"title":672,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-file-directory","Linux - 文件与目录操作",{"path":674,"title":675,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-network","Linux - 网络配置",{"path":677,"title":678,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-package","Linux - 软件包管理",{"path":680,"title":681,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-process","Linux - 进程管理",{"path":683,"title":684,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-scripts","Linux - 常用脚本示例",{"path":686,"title":687,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-service","Linux - 服务管理",{"path":689,"title":690,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-user-permission","Linux - 用户与权限管理",{"path":692,"title":693,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-https","Nginx - HTTPS 配置",{"path":695,"title":696,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-install","Nginx - 安装与配置",{"path":698,"title":699,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-loadbalance","Nginx - 负载均衡",{"path":701,"title":702,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-optimization","Nginx - 性能优化",{"path":704,"title":705,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-proxy","Nginx - 反向代理",{"path":707,"title":708,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-static","Nginx - 静态资源服务",{"path":710,"title":711,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-vhost","Nginx - 虚拟主机配置",{"path":713,"title":714,"description":715},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-architecture","MySQL 高可用架构","主从复制、读写分离、分库分表。",{"path":717,"title":718,"description":719},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-index","MySQL 索引","索引是帮助 MySQL 高效获取数据的有序数据结构。",{"path":721,"title":722,"description":723},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-lock","MySQL 锁","锁用于解决并发访问时的数据一致性问题。",{"path":725,"title":726,"description":727},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-optimize","MySQL 性能优化","SQL 优化是后端开发必备技能。",{"path":729,"title":730,"description":731},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-transaction","MySQL 事务","事务是一组不可分割的操作，要么全部成功，要么全部失败。",{"path":733,"title":734,"description":735},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fsql-advanced","SQL 进阶","多表查询、子查询、函数、视图、存储过程。",{"path":737,"title":738,"description":739},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fsql-basic","SQL 基础","SQL（Structured Query Language）是操作关系型数据库的标准语言。",{"path":741,"title":742,"description":743},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-advanced","Redis 进阶功能","事务、发布订阅、Lua 脚本、Pipeline。",{"path":745,"title":746,"description":747},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-basic","Redis 基础","Redis 安装配置与基本命令。",{"path":749,"title":750,"description":751},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-cluster","Redis 高可用","主从复制、哨兵、Cluster 集群。",{"path":753,"title":754,"description":755},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-datatype","Redis 数据类型","Redis 5 种基本数据类型 + 4 种特殊类型。",{"path":757,"title":758,"description":759},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-optimize","Redis 性能优化","内存优化、缓存问题、最佳实践。",{"path":761,"title":762,"description":763},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-persistence","Redis 持久化","Redis 提供 RDB 和 AOF 两种持久化方式。",{"path":765,"title":766,"description":767},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-principle","Redis 底层原理","数据结构、线程模型、网络模型。",{"path":769,"title":770,"description":771},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fbehaiver-patterns\u002Fobserver-pattern","观察者模式","观察者模式属于行为型模式，定义了对象之间的一对多的依赖关系，在这种模式中，当一个对象的状态发生变化时，所有依赖于它的对象都会得到通知，并且执行相关操作。观察者模式又被成为“发布—订阅模式”，即发布者发生改变后，会通知所有订阅者。",{"path":773,"title":774,"description":11},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fcreate-patterns\u002Ffactory-pattern","工厂模式",{"path":776,"title":777,"description":778},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fcreate-patterns\u002Fsingleton-pattern","单例模式","单例模式是最常用的设计模式之一，他可以保证在整个应用中，某个类只存在一个实例化对象，即全局使用到该类的只有一个对象，这种模式在需要限制某些类的实例数量时非常有用，通常全局只需要一个该对象即可，如一些配置文件映射对象、数据库连接对象等。",{"path":780,"title":781,"description":782},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fstructural-patterns\u002Fadapter-pattern","适配器模式","适配器模式是一种结构型模式，可以将一个类的接口转换成客户端所期望的另一种接口，适配器模式可以帮助开发人员在不修改现有代码的情况下，将不兼容的类组合在一起。",{"path":784,"title":785,"description":786},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-basic-operations","Git 创建版本库","在 Git 上创建版本库有两种方式，一种是直接拷贝远程 Git 仓库到本地，另外一种是我们自己创建本地的版本库。",{"path":788,"title":789,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-branch-manage","Git 分支管理",{"path":791,"title":792,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-content-operations","Git 仓库内容操作",{"path":794,"title":795,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-introduce-install","Git 介绍和安装",{"path":797,"title":798,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-remote-manage","Git 远程管理",{"path":800,"title":801,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-workspace-index-repo","Git 工作原理",{"path":803,"title":804,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fhomebrew","HomeBrew 教程",{"path":806,"title":807,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fidea\u002Fshortcuts","快捷键",{"path":809,"title":810,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fmaven\u002Fintroduce-install-config","Maven - 介绍、安装、配置",{"path":812,"title":813,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fbasic-knowledge","2. 基础知识",{"path":815,"title":816,"description":817},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fcomponent-communication","9. 组件通信","在前面的章节内，介绍了 Vue 中最核心的内容——组件的介绍和使用，和 Java 等编程语言相反，组件并不近似于这些变成语言中的类，类可以通过类或者其实例化的对象来相互交互，但 Vue 组件之间的作用域是相互独立的，这就意味着不同组件之间的数据无法相互引用。",{"path":819,"title":820,"description":821},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fcomputed","4. 计算属性","虽然直接在模板中使用表达式方便，但是如果在模板中添加很多逻辑，会让模板变的臃肿且难维护，耦合度较高。有没有一种简单的方式来实现呢？答案是有的。",{"path":823,"title":824,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fcreate-vue-project","1. 环境搭建及安装",{"path":826,"title":827,"description":828},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Flife-cycle","6. 生命周期","生命周期是指组件从创建、挂载、更新到销毁的整个过程中所经历的一系列阶段。在 Vue 中，每个组件都有自己的生命周期，可以通过生命周期钩子函数来监听和处理组件在不同阶段的行为和状态。",{"path":830,"title":831,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fother-api","10. 其他 API",{"path":833,"title":834,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fpinia","8. Pinia",{"path":836,"title":837,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Frouter","7. 路由",{"path":839,"title":840,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Ftemplate-grammar","3. 指令及模板语法",{"path":842,"title":843,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fvue3-new-component","11. Vue3 新组件",{"path":845,"title":846,"description":847},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fwatch","5. 监视","Watch 是 Vue 提供的一个用于监视响应式数据变化并执行相应操作的 API，能够对响应式数据的变化做出一些操作的功能。Vue3 中的 Watch 支持多种用法，包括监视响应式对象、ref 对象、数组、函数等。",{"path":849,"title":850,"description":11},"\u002Ftutorials\u002Fmq\u002Fkafka\u002Fkafka-introduction","Kafka 简介与安装",{"path":852,"title":853,"description":11},"\u002Ftutorials\u002Fmq\u002Fkafka\u002Fkafka-producer-consumer","Kafka 生产者与消费者",{"path":855,"title":856,"description":857},"\u002Ftutorials\u002Fmq\u002Fkafka\u002Fkafka-springboot","Spring Boot 整合 Kafka","Spring Kafka 提供了对 Apache Kafka 的便捷集成。",{"path":859,"title":860,"description":861},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-exchange","RabbitMQ Exchange 详解","Exchange（交换机）是 RabbitMQ 的核心组件，负责接收生产者发送的消息，并根据规则将消息路由到一个或多个队列。",{"path":863,"title":864,"description":11},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-introduction","RabbitMQ 简介与安装",{"path":866,"title":867,"description":868},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-reliability","RabbitMQ 消息可靠性","消息可靠性是消息队列的核心要求，RabbitMQ 提供了多种机制来保证消息不丢失。",{"path":870,"title":871,"description":872},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-springboot","Spring Boot 整合 RabbitMQ","Spring AMQP 提供了对 RabbitMQ 的便捷集成，大大简化了开发工作。",{"path":874,"title":875,"description":11},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-client","RocketMQ 客户端使用",{"path":877,"title":878,"description":11},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-concepts","RocketMQ 核心概念",{"path":880,"title":881,"description":11},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-installation","RocketMQ 安装部署",{"path":883,"title":884,"description":885},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-message-type","RocketMQ 消息类型","RocketMQ 支持多种消息类型，满足不同业务场景需求。",{"id":887,"title":361,"body":888,"description":11,"extension":6317,"meta":6318,"navigation":1169,"path":360,"seo":6319,"stem":6320,"__hash__":6321},"docs\u002Fother\u002Fjava\u002Fcollection\u002Flist-linkedlist.md",{"type":889,"value":890,"toc":6301},"minimark",[891,898,902,905,965,969,974,982,988,999,1005,1016,1022,1027,1033,1041,1047,1088,1094,1108,1111,1115,1118,1133,1136,1141,1255,1260,1401,1404,1407,1421,1578,1581,1603,1607,1695,1699,1842,1847,1957,1962,2475,2480,2535,2540,2601,2604,2618,2621,2880,2883,2886,2891,2980,2985,3087,3092,3191,3194,3197,3202,3277,3282,3381,3386,3644,3649,3751,3756,3858,3863,3947,3952,4171,4174,4177,4182,4314,4317,4320,4325,4497,4500,4503,4508,4748,4752,4755,4769,5156,5160,5163,5195,6297],[892,893,894],"p",{},[895,896],"img",{"alt":11,"src":897},"\u002Fassets\u002Fjava\u002Fcore\u002Flist-linkedlist\u002F2024-03-24-22-48-48.png",[899,900,901],"h2",{"id":901},"介绍",[892,903,904],{},"LinkedList 是一个同时实现了 List 和 Deque 接口的双向链表，既可以被看做是一个顺序集合，也可以看做是一个队列，又可以看做为一个栈。",[906,907,908,921,932,954],"ol",{},[909,910,911,912],"li",{},"双向链表结构",[913,914,915,918],"ul",{},[909,916,917],{},"LinkedList 内部使用双向链表来存储元素，每个节点包含了对前一个节点和后一个节点的引用。",[909,919,920],{},"这种结构使得在任意位置进行删除和插入操作的时间复杂度是 O(1)。",[909,922,923,924],{},"实现接口",[913,925,926,929],{},[909,927,928],{},"实现了 List 接口，故可以存储一组有序元素，并且支持通过索引访问、插入、删除等操作。",[909,930,931],{},"实现了 Deque 接口，提供了双端队列的功能，故可以从队列的两端进行元素的插入和删除操作。",[909,933,934,935],{},"特点和优势",[913,936,937,940,943,946],{},[909,938,939],{},"节点逻辑有序：LinkedList 中的所有数据节点，是通过引用来连接起来，在物理存储上是随机分配的。",[909,941,942],{},"支持动态增长：LinkedList 的容量可以动态增长，不必要像数组预先分配指定大小且连续的空间。",[909,944,945],{},"插入和删除效率高：因为其底层是通过引用连接起来的，故对其操作时仅需更改与其相连接的结点的引用即可。",[909,947,948,949,953],{},"线程不安全的：是非线程安全的，在并发环境下使用，需要考虑同步操作或者改用其他线程安全的类，如 ",[950,951,952],"code",{},"java.util.concurrent.ConcurrentLinkedDeque","。",[909,955,956,957],{},"适用场景",[913,958,959,962],{},[909,960,961],{},"不需要频繁的随机访问数据，需要频繁的添加、修改、删除操作，特别是在中间位置时推荐使用。",[909,963,964],{},"对存储占用不敏感的情况，因为其是通过引用连接起来的，所以相较于数组而言，存储了较多的辅助信息，故存储消耗比 ArrayList 大。",[899,966,968],{"id":967},"常用api","常用API",[906,970,971],{},[909,972,973],{},"添加元素",[913,975,976,979],{},[909,977,978],{},"add(E e)：向链表尾部添加元素 e。",[909,980,981],{},"add(int index, E element)：在指定位置 index 插入元素 element。",[906,983,985],{"start":984},2,[909,986,987],{},"获取元素",[913,989,990,993,996],{},[909,991,992],{},"get(int index)：获取指定位置 index 的元素。",[909,994,995],{},"getFirst()：获取链表的第一个元素。",[909,997,998],{},"getLast()：获取链表的最后一个元素。",[906,1000,1002],{"start":1001},3,[909,1003,1004],{},"移除元素",[913,1006,1007,1010,1013],{},[909,1008,1009],{},"remove(int index)：移除指定位置 index 的元素。",[909,1011,1012],{},"removeFirst()：移除链表的第一个元素。",[909,1014,1015],{},"removeLast()：移除链表的最后一个元素。",[906,1017,1019],{"start":1018},4,[909,1020,1021],{},"替换元素",[913,1023,1024],{},[909,1025,1026],{},"set(int index, E element)：替换指定位置 index 的元素为 element。",[906,1028,1030],{"start":1029},5,[909,1031,1032],{},"查询元素位置",[913,1034,1035,1038],{},[909,1036,1037],{},"indexOf(Object o)：返回元素 o 在链表中第一次出现的位置。",[909,1039,1040],{},"lastIndexOf(Object o)：返回元素 o 在链表中最后一次出现的位置。",[906,1042,1044],{"start":1043},6,[909,1045,1046],{},"链表操作",[913,1048,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085],{},[909,1050,1051],{},"addFirst(E e)：在链表头部添加元素 e。",[909,1053,1054],{},"addLast(E e)：在链表尾部添加元素 e。",[909,1056,1057],{},"offer(E e)：向链表尾部添加元素，返回是否成功。",[909,1059,1060],{},"offerFirst(E e)：向链表头部添加元素，返回是否成功。",[909,1062,1063],{},"offerLast(E e)：向链表尾部添加元素，返回是否成功。",[909,1065,1066],{},"poll()：移除并返回链表头部的元素。",[909,1068,1069],{},"pollFirst()：移除并返回链表的第一个元素。",[909,1071,1072],{},"pollLast()：移除并返回链表的最后一个元素。",[909,1074,1075],{},"peek()：返回链表头部的元素，不移除。",[909,1077,1078],{},"peekFirst()：返回链表的第一个元素，不移除。",[909,1080,1081],{},"peekLast()：返回链表的最后一个元素，不移除。",[909,1083,1084],{},"push(E e)：在链表头部添加元素 e，等效于 addFirst。",[909,1086,1087],{},"pop()：移除并返回链表头部的元素，等效于 removeFirst。",[906,1089,1091],{"start":1090},7,[909,1092,1093],{},"其他方法",[913,1095,1096,1099,1102,1105],{},[909,1097,1098],{},"isEmpty()：判断链表是否为空。",[909,1100,1101],{},"size()：返回链表的大小（元素个数）。",[909,1103,1104],{},"clear()：清空链表中的所有元素。",[909,1106,1107],{},"contains(Object o)：判断链表是否包含元素 o。",[899,1109,1110],{"id":1110},"实现方式",[1112,1113,1114],"h3",{"id":1114},"底层存储",[892,1116,1117],{},"LinkedList 的底层通过双向链表实现，底层主要是通过头指针、尾指针、元素个数这三个值来进行存储的。",[913,1119,1120,1123,1126],{},[909,1121,1122],{},"size：元素个数，或链表长度",[909,1124,1125],{},"first：指向链表的头节点",[909,1127,1128,1129],{},"last：指向链表的末尾节点\n",[1130,1131],"note",{"title":1132},"注意",[892,1134,1135],{},"这里要注意的是，当链表为空的时候 first 和 last 引用都指向null。\n",[913,1137,1138],{},[909,1139,1140],{},"底层实现源码",[1142,1143,1147],"pre",{"className":1144,"code":1145,"language":1146,"meta":11,"style":11},"language-java shiki shiki-themes github-light github-light github-dark","transient int size;\n\n\u002F**\n * Pointer to first node.\n * Invariant: (first == null && last == null) ||\n *            (first.prev == null && first.item != null)\n *\u002F\ntransient Node\u003CE> first;\n\n\u002F**\n * Pointer to last node.\n * Invariant: (first == null && last == null) ||\n *            (last.next == null && last.item != null)\n *\u002F\ntransient Node\u003CE> last;\n","java",[950,1148,1149,1165,1171,1177,1182,1187,1192,1197,1211,1216,1221,1227,1232,1238,1243],{"__ignoreMap":11},[1150,1151,1154,1158,1161],"span",{"class":1152,"line":1153},"line",1,[1150,1155,1157],{"class":1156},"s8jYJ","transient",[1150,1159,1160],{"class":1156}," int",[1150,1162,1164],{"class":1163},"sxrX7"," size;\n",[1150,1166,1167],{"class":1152,"line":984},[1150,1168,1170],{"emptyLinePlaceholder":1169},true,"\n",[1150,1172,1173],{"class":1152,"line":1001},[1150,1174,1176],{"class":1175},"sCsY4","\u002F**\n",[1150,1178,1179],{"class":1152,"line":1018},[1150,1180,1181],{"class":1175}," * Pointer to first node.\n",[1150,1183,1184],{"class":1152,"line":1029},[1150,1185,1186],{"class":1175}," * Invariant: (first == null && last == null) ||\n",[1150,1188,1189],{"class":1152,"line":1043},[1150,1190,1191],{"class":1175}," *            (first.prev == null && first.item != null)\n",[1150,1193,1194],{"class":1152,"line":1090},[1150,1195,1196],{"class":1175}," *\u002F\n",[1150,1198,1200,1202,1205,1208],{"class":1152,"line":1199},8,[1150,1201,1157],{"class":1156},[1150,1203,1204],{"class":1163}," Node\u003C",[1150,1206,1207],{"class":1156},"E",[1150,1209,1210],{"class":1163},"> first;\n",[1150,1212,1214],{"class":1152,"line":1213},9,[1150,1215,1170],{"emptyLinePlaceholder":1169},[1150,1217,1219],{"class":1152,"line":1218},10,[1150,1220,1176],{"class":1175},[1150,1222,1224],{"class":1152,"line":1223},11,[1150,1225,1226],{"class":1175}," * Pointer to last node.\n",[1150,1228,1230],{"class":1152,"line":1229},12,[1150,1231,1186],{"class":1175},[1150,1233,1235],{"class":1152,"line":1234},13,[1150,1236,1237],{"class":1175}," *            (last.next == null && last.item != null)\n",[1150,1239,1241],{"class":1152,"line":1240},14,[1150,1242,1196],{"class":1175},[1150,1244,1246,1248,1250,1252],{"class":1152,"line":1245},15,[1150,1247,1157],{"class":1156},[1150,1249,1204],{"class":1163},[1150,1251,1207],{"class":1156},[1150,1253,1254],{"class":1163},"> last;\n",[913,1256,1257],{},[909,1258,1259],{},"Node类：其是 LinkedList 的静态私有内部类",[1142,1261,1263],{"className":1144,"code":1262,"language":1146,"meta":11,"style":11},"private static class Node\u003CE> {\n    E item;\n    Node\u003CE> next;\n    Node\u003CE> prev;\n\n    Node(Node\u003CE> prev, E element, Node\u003CE> next) {\n        this.item = element;\n        this.next = next;\n        this.prev = prev;\n    }\n}\n",[950,1264,1265,1288,1293,1303,1312,1316,1352,1367,1379,1391,1396],{"__ignoreMap":11},[1150,1266,1267,1270,1273,1276,1280,1283,1285],{"class":1152,"line":1153},[1150,1268,1269],{"class":1156},"private",[1150,1271,1272],{"class":1156}," static",[1150,1274,1275],{"class":1156}," class",[1150,1277,1279],{"class":1278},"snPdu"," Node",[1150,1281,1282],{"class":1163},"\u003C",[1150,1284,1207],{"class":1156},[1150,1286,1287],{"class":1163},"> {\n",[1150,1289,1290],{"class":1152,"line":984},[1150,1291,1292],{"class":1163},"    E item;\n",[1150,1294,1295,1298,1300],{"class":1152,"line":1001},[1150,1296,1297],{"class":1163},"    Node\u003C",[1150,1299,1207],{"class":1156},[1150,1301,1302],{"class":1163},"> next;\n",[1150,1304,1305,1307,1309],{"class":1152,"line":1018},[1150,1306,1297],{"class":1163},[1150,1308,1207],{"class":1156},[1150,1310,1311],{"class":1163},"> prev;\n",[1150,1313,1314],{"class":1152,"line":1029},[1150,1315,1170],{"emptyLinePlaceholder":1169},[1150,1317,1318,1321,1324,1326,1329,1333,1336,1339,1342,1344,1346,1349],{"class":1152,"line":1043},[1150,1319,1320],{"class":1278},"    Node",[1150,1322,1323],{"class":1163},"(Node\u003C",[1150,1325,1207],{"class":1156},[1150,1327,1328],{"class":1163},"> ",[1150,1330,1332],{"class":1331},"sP4rz","prev",[1150,1334,1335],{"class":1163},", E ",[1150,1337,1338],{"class":1331},"element",[1150,1340,1341],{"class":1163},", Node\u003C",[1150,1343,1207],{"class":1156},[1150,1345,1328],{"class":1163},[1150,1347,1348],{"class":1331},"next",[1150,1350,1351],{"class":1163},") {\n",[1150,1353,1354,1358,1361,1364],{"class":1152,"line":1090},[1150,1355,1357],{"class":1356},"sBjJW","        this",[1150,1359,1360],{"class":1163},".item ",[1150,1362,1363],{"class":1156},"=",[1150,1365,1366],{"class":1163}," element;\n",[1150,1368,1369,1371,1374,1376],{"class":1152,"line":1199},[1150,1370,1357],{"class":1356},[1150,1372,1373],{"class":1163},".next ",[1150,1375,1363],{"class":1156},[1150,1377,1378],{"class":1163}," next;\n",[1150,1380,1381,1383,1386,1388],{"class":1152,"line":1213},[1150,1382,1357],{"class":1356},[1150,1384,1385],{"class":1163},".prev ",[1150,1387,1363],{"class":1156},[1150,1389,1390],{"class":1163}," prev;\n",[1150,1392,1393],{"class":1152,"line":1218},[1150,1394,1395],{"class":1163},"    }\n",[1150,1397,1398],{"class":1152,"line":1223},[1150,1399,1400],{"class":1163},"}\n",[1112,1402,1403],{"id":1403},"构造方法",[892,1405,1406],{},"LinkedList 中提供了两个构造方法：",[913,1408,1409,1415],{},[909,1410,1411,1414],{},[950,1412,1413],{},"LinkedList()","：创建一个空集合",[909,1416,1417,1420],{},[950,1418,1419],{},"LinkedList(Collection&lt;? extends E> var1)","：创建一个指定元素列表的集合",[1142,1422,1424],{"className":1144,"code":1423,"language":1146,"meta":11,"style":11},"\u002F**\n * Constructs an empty list.\n *\u002F\npublic LinkedList() {\n    this.size = 0;\n}\n\n\u002F**\n * Constructs a list containing the elements of the specified\n * collection, in the order they are returned by the collection's\n * iterator.\n *\n * @param  c the collection whose elements are to be placed into this list\n * @throws NullPointerException if the specified collection is null\n *\u002F\npublic LinkedList(Collection\u003C? extends E> c) {\n    this();\n    this.addAll(c);\n}\n",[950,1425,1426,1430,1435,1439,1450,1466,1470,1474,1478,1483,1488,1493,1498,1512,1525,1529,1551,1559,1573],{"__ignoreMap":11},[1150,1427,1428],{"class":1152,"line":1153},[1150,1429,1176],{"class":1175},[1150,1431,1432],{"class":1152,"line":984},[1150,1433,1434],{"class":1175}," * Constructs an empty list.\n",[1150,1436,1437],{"class":1152,"line":1001},[1150,1438,1196],{"class":1175},[1150,1440,1441,1444,1447],{"class":1152,"line":1018},[1150,1442,1443],{"class":1156},"public",[1150,1445,1446],{"class":1278}," LinkedList",[1150,1448,1449],{"class":1163},"() {\n",[1150,1451,1452,1455,1458,1460,1463],{"class":1152,"line":1029},[1150,1453,1454],{"class":1356},"    this",[1150,1456,1457],{"class":1163},".size ",[1150,1459,1363],{"class":1156},[1150,1461,1462],{"class":1356}," 0",[1150,1464,1465],{"class":1163},";\n",[1150,1467,1468],{"class":1152,"line":1043},[1150,1469,1400],{"class":1163},[1150,1471,1472],{"class":1152,"line":1090},[1150,1473,1170],{"emptyLinePlaceholder":1169},[1150,1475,1476],{"class":1152,"line":1199},[1150,1477,1176],{"class":1175},[1150,1479,1480],{"class":1152,"line":1213},[1150,1481,1482],{"class":1175}," * Constructs a list containing the elements of the specified\n",[1150,1484,1485],{"class":1152,"line":1218},[1150,1486,1487],{"class":1175}," * collection, in the order they are returned by the collection's\n",[1150,1489,1490],{"class":1152,"line":1223},[1150,1491,1492],{"class":1175}," * iterator.\n",[1150,1494,1495],{"class":1152,"line":1229},[1150,1496,1497],{"class":1175}," *\n",[1150,1499,1500,1503,1506,1509],{"class":1152,"line":1234},[1150,1501,1502],{"class":1175}," * ",[1150,1504,1505],{"class":1156},"@param",[1150,1507,1508],{"class":1331},"  c",[1150,1510,1511],{"class":1175}," the collection whose elements are to be placed into this list\n",[1150,1513,1514,1516,1519,1522],{"class":1152,"line":1240},[1150,1515,1502],{"class":1175},[1150,1517,1518],{"class":1156},"@throws",[1150,1520,1521],{"class":1278}," NullPointerException",[1150,1523,1524],{"class":1175}," if the specified collection is null\n",[1150,1526,1527],{"class":1152,"line":1245},[1150,1528,1196],{"class":1175},[1150,1530,1532,1534,1536,1539,1542,1545,1548],{"class":1152,"line":1531},16,[1150,1533,1443],{"class":1156},[1150,1535,1446],{"class":1278},[1150,1537,1538],{"class":1163},"(Collection",[1150,1540,1541],{"class":1156},"\u003C?",[1150,1543,1544],{"class":1163}," extends E",[1150,1546,1547],{"class":1156},">",[1150,1549,1550],{"class":1163}," c) {\n",[1150,1552,1554,1556],{"class":1152,"line":1553},17,[1150,1555,1454],{"class":1356},[1150,1557,1558],{"class":1163},"();\n",[1150,1560,1562,1564,1567,1570],{"class":1152,"line":1561},18,[1150,1563,1454],{"class":1356},[1150,1565,1566],{"class":1163},".",[1150,1568,1569],{"class":1278},"addAll",[1150,1571,1572],{"class":1163},"(c);\n",[1150,1574,1576],{"class":1152,"line":1575},19,[1150,1577,1400],{"class":1163},[1112,1579,1580],{"id":1580},"add方法",[892,1582,1583,1584,1587,1588,1587,1591,1587,1594,1587,1597,1587,1600],{},"LinkedList 中向集合中添加元素的操作，提供了 6 个不同的实现方法：",[950,1585,1586],{},"add(E e)","、",[950,1589,1590],{},"add(int index, E element)",[950,1592,1593],{},"addAll(Collection&lt;? extends E> c)",[950,1595,1596],{},"addAll(int index, Collection&lt;? extends E> c)",[950,1598,1599],{},"addFirst(E e)",[950,1601,1602],{},"addLast(E e)",[913,1604,1605],{},[909,1606,978],{},[1142,1608,1610],{"className":1144,"code":1609,"language":1146,"meta":11,"style":11},"\u002F**\n * Appends the specified element to the end of this list.\n *\n * \u003Cp>This method is equivalent to {@link #addLast}.\n *\n * @param e element to be appended to this list\n * @return {@code true} (as specified by {@link Collection#add})\n *\u002F\npublic boolean add(E e) {\n    linkLast(e);\n    return true;\n}\n",[950,1611,1612,1616,1621,1625,1630,1634,1646,1656,1660,1673,1681,1691],{"__ignoreMap":11},[1150,1613,1614],{"class":1152,"line":1153},[1150,1615,1176],{"class":1175},[1150,1617,1618],{"class":1152,"line":984},[1150,1619,1620],{"class":1175}," * Appends the specified element to the end of this list.\n",[1150,1622,1623],{"class":1152,"line":1001},[1150,1624,1497],{"class":1175},[1150,1626,1627],{"class":1152,"line":1018},[1150,1628,1629],{"class":1175}," * \u003Cp>This method is equivalent to {@link #addLast}.\n",[1150,1631,1632],{"class":1152,"line":1029},[1150,1633,1497],{"class":1175},[1150,1635,1636,1638,1640,1643],{"class":1152,"line":1043},[1150,1637,1502],{"class":1175},[1150,1639,1505],{"class":1156},[1150,1641,1642],{"class":1331}," e",[1150,1644,1645],{"class":1175}," element to be appended to this list\n",[1150,1647,1648,1650,1653],{"class":1152,"line":1090},[1150,1649,1502],{"class":1175},[1150,1651,1652],{"class":1156},"@return",[1150,1654,1655],{"class":1175}," {@code true} (as specified by {@link Collection#add})\n",[1150,1657,1658],{"class":1152,"line":1199},[1150,1659,1196],{"class":1175},[1150,1661,1662,1664,1667,1670],{"class":1152,"line":1213},[1150,1663,1443],{"class":1156},[1150,1665,1666],{"class":1156}," boolean",[1150,1668,1669],{"class":1278}," add",[1150,1671,1672],{"class":1163},"(E e) {\n",[1150,1674,1675,1678],{"class":1152,"line":1218},[1150,1676,1677],{"class":1278},"    linkLast",[1150,1679,1680],{"class":1163},"(e);\n",[1150,1682,1683,1686,1689],{"class":1152,"line":1223},[1150,1684,1685],{"class":1156},"    return",[1150,1687,1688],{"class":1356}," true",[1150,1690,1465],{"class":1163},[1150,1692,1693],{"class":1152,"line":1229},[1150,1694,1400],{"class":1163},[913,1696,1697],{},[909,1698,981],{},[1142,1700,1702],{"className":1144,"code":1701,"language":1146,"meta":11,"style":11},"\u002F**\n * Inserts the specified element at the specified position in this list.\n * Shifts the element currently at that position (if any) and any\n * subsequent elements to the right (adds one to their indices).\n *\n * @param index index at which the specified element is to be inserted\n * @param element element to be inserted\n * @throws IndexOutOfBoundsException {@inheritDoc}\n *\u002F\npublic void add(int index, E element) {\n    checkPositionIndex(index);\n\n    if (index == size)\n        linkLast(element);\n    else\n        linkBefore(element, node(index));\n}\n",[950,1703,1704,1708,1713,1718,1723,1727,1739,1751,1763,1767,1785,1793,1797,1811,1819,1824,1838],{"__ignoreMap":11},[1150,1705,1706],{"class":1152,"line":1153},[1150,1707,1176],{"class":1175},[1150,1709,1710],{"class":1152,"line":984},[1150,1711,1712],{"class":1175}," * Inserts the specified element at the specified position in this list.\n",[1150,1714,1715],{"class":1152,"line":1001},[1150,1716,1717],{"class":1175}," * Shifts the element currently at that position (if any) and any\n",[1150,1719,1720],{"class":1152,"line":1018},[1150,1721,1722],{"class":1175}," * subsequent elements to the right (adds one to their indices).\n",[1150,1724,1725],{"class":1152,"line":1029},[1150,1726,1497],{"class":1175},[1150,1728,1729,1731,1733,1736],{"class":1152,"line":1043},[1150,1730,1502],{"class":1175},[1150,1732,1505],{"class":1156},[1150,1734,1735],{"class":1331}," index",[1150,1737,1738],{"class":1175}," index at which the specified element is to be inserted\n",[1150,1740,1741,1743,1745,1748],{"class":1152,"line":1090},[1150,1742,1502],{"class":1175},[1150,1744,1505],{"class":1156},[1150,1746,1747],{"class":1331}," element",[1150,1749,1750],{"class":1175}," element to be inserted\n",[1150,1752,1753,1755,1757,1760],{"class":1152,"line":1199},[1150,1754,1502],{"class":1175},[1150,1756,1518],{"class":1156},[1150,1758,1759],{"class":1278}," IndexOutOfBoundsException",[1150,1761,1762],{"class":1175}," {@inheritDoc}\n",[1150,1764,1765],{"class":1152,"line":1213},[1150,1766,1196],{"class":1175},[1150,1768,1769,1771,1774,1776,1779,1782],{"class":1152,"line":1218},[1150,1770,1443],{"class":1156},[1150,1772,1773],{"class":1156}," void",[1150,1775,1669],{"class":1278},[1150,1777,1778],{"class":1163},"(",[1150,1780,1781],{"class":1156},"int",[1150,1783,1784],{"class":1163}," index, E element) {\n",[1150,1786,1787,1790],{"class":1152,"line":1223},[1150,1788,1789],{"class":1278},"    checkPositionIndex",[1150,1791,1792],{"class":1163},"(index);\n",[1150,1794,1795],{"class":1152,"line":1229},[1150,1796,1170],{"emptyLinePlaceholder":1169},[1150,1798,1799,1802,1805,1808],{"class":1152,"line":1234},[1150,1800,1801],{"class":1156},"    if",[1150,1803,1804],{"class":1163}," (index ",[1150,1806,1807],{"class":1156},"==",[1150,1809,1810],{"class":1163}," size)\n",[1150,1812,1813,1816],{"class":1152,"line":1240},[1150,1814,1815],{"class":1278},"        linkLast",[1150,1817,1818],{"class":1163},"(element);\n",[1150,1820,1821],{"class":1152,"line":1245},[1150,1822,1823],{"class":1156},"    else\n",[1150,1825,1826,1829,1832,1835],{"class":1152,"line":1531},[1150,1827,1828],{"class":1278},"        linkBefore",[1150,1830,1831],{"class":1163},"(element, ",[1150,1833,1834],{"class":1278},"node",[1150,1836,1837],{"class":1163},"(index));\n",[1150,1839,1840],{"class":1152,"line":1553},[1150,1841,1400],{"class":1163},[913,1843,1844],{},[909,1845,1846],{},"addAll(Collection\u003C? extends E> c)",[1142,1848,1850],{"className":1144,"code":1849,"language":1146,"meta":11,"style":11},"\u002F**\n * Appends all of the elements in the specified collection to the end of\n * this list, in the order that they are returned by the specified\n * collection's iterator.  The behavior of this operation is undefined if\n * the specified collection is modified while the operation is in\n * progress.  (Note that this will occur if the specified collection is\n * this list, and it's nonempty.)\n *\n * @param c collection containing elements to be added to this list\n * @return {@code true} if this list changed as a result of the call\n * @throws NullPointerException if the specified collection is null\n *\u002F\npublic boolean addAll(Collection\u003C? extends E> c) {\n    return addAll(size, c);\n}\n",[950,1851,1852,1856,1861,1866,1871,1876,1881,1886,1890,1902,1911,1921,1925,1944,1953],{"__ignoreMap":11},[1150,1853,1854],{"class":1152,"line":1153},[1150,1855,1176],{"class":1175},[1150,1857,1858],{"class":1152,"line":984},[1150,1859,1860],{"class":1175}," * Appends all of the elements in the specified collection to the end of\n",[1150,1862,1863],{"class":1152,"line":1001},[1150,1864,1865],{"class":1175}," * this list, in the order that they are returned by the specified\n",[1150,1867,1868],{"class":1152,"line":1018},[1150,1869,1870],{"class":1175}," * collection's iterator.  The behavior of this operation is undefined if\n",[1150,1872,1873],{"class":1152,"line":1029},[1150,1874,1875],{"class":1175}," * the specified collection is modified while the operation is in\n",[1150,1877,1878],{"class":1152,"line":1043},[1150,1879,1880],{"class":1175}," * progress.  (Note that this will occur if the specified collection is\n",[1150,1882,1883],{"class":1152,"line":1090},[1150,1884,1885],{"class":1175}," * this list, and it's nonempty.)\n",[1150,1887,1888],{"class":1152,"line":1199},[1150,1889,1497],{"class":1175},[1150,1891,1892,1894,1896,1899],{"class":1152,"line":1213},[1150,1893,1502],{"class":1175},[1150,1895,1505],{"class":1156},[1150,1897,1898],{"class":1331}," c",[1150,1900,1901],{"class":1175}," collection containing elements to be added to this list\n",[1150,1903,1904,1906,1908],{"class":1152,"line":1218},[1150,1905,1502],{"class":1175},[1150,1907,1652],{"class":1156},[1150,1909,1910],{"class":1175}," {@code true} if this list changed as a result of the call\n",[1150,1912,1913,1915,1917,1919],{"class":1152,"line":1223},[1150,1914,1502],{"class":1175},[1150,1916,1518],{"class":1156},[1150,1918,1521],{"class":1278},[1150,1920,1524],{"class":1175},[1150,1922,1923],{"class":1152,"line":1229},[1150,1924,1196],{"class":1175},[1150,1926,1927,1929,1931,1934,1936,1938,1940,1942],{"class":1152,"line":1234},[1150,1928,1443],{"class":1156},[1150,1930,1666],{"class":1156},[1150,1932,1933],{"class":1278}," addAll",[1150,1935,1538],{"class":1163},[1150,1937,1541],{"class":1156},[1150,1939,1544],{"class":1163},[1150,1941,1547],{"class":1156},[1150,1943,1550],{"class":1163},[1150,1945,1946,1948,1950],{"class":1152,"line":1240},[1150,1947,1685],{"class":1156},[1150,1949,1933],{"class":1278},[1150,1951,1952],{"class":1163},"(size, c);\n",[1150,1954,1955],{"class":1152,"line":1245},[1150,1956,1400],{"class":1163},[913,1958,1959],{},[909,1960,1961],{},"addAll(int index, Collection\u003C? extends E> c)",[1142,1963,1965],{"className":1144,"code":1964,"language":1146,"meta":11,"style":11},"\u002F**\n * Inserts all of the elements in the specified collection into this\n * list, starting at the specified position.  Shifts the element\n * currently at that position (if any) and any subsequent elements to\n * the right (increases their indices).  The new elements will appear\n * in the list in the order that they are returned by the\n * specified collection's iterator.\n *\n * @param index index at which to insert the first element\n *              from the specified collection\n * @param c collection containing elements to be added to this list\n * @return {@code true} if this list changed as a result of the call\n * @throws IndexOutOfBoundsException {@inheritDoc}\n * @throws NullPointerException if the specified collection is null\n *\u002F\npublic boolean addAll(int index, Collection\u003C? extends E> c) {\n    checkPositionIndex(index);\n\n    Object[] a = c.toArray();\n    int numNew = a.length;\n    if (numNew == 0)\n        return false;\n\n    Node\u003CE> pred, succ;\n    if (index == size) {\n        succ = null;\n        pred = last;\n    } else {\n        succ = node(index);\n        pred = succ.prev;\n    }\n\n    for (Object o : a) {\n        @SuppressWarnings(\"unchecked\") E e = (E) o;\n        Node\u003CE> newNode = new Node\u003C>(pred, e, null);\n        if (pred == null)\n            first = newNode;\n        else\n            pred.next = newNode;\n        pred = newNode;\n    }\n\n    if (succ == null) {\n        last = pred;\n    } else {\n        pred.next = succ;\n        succ.prev = pred;\n    }\n\n    size += numNew;\n    modCount++;\n    return true;\n}\n",[950,1966,1967,1971,1976,1981,1986,1991,1996,2001,2005,2016,2021,2031,2039,2049,2059,2063,2086,2092,2096,2114,2128,2143,2154,2159,2169,2181,2194,2205,2217,2229,2239,2244,2249,2264,2287,2312,2327,2338,2344,2354,2363,2368,2373,2387,2398,2407,2418,2428,2433,2438,2450,2461,2470],{"__ignoreMap":11},[1150,1968,1969],{"class":1152,"line":1153},[1150,1970,1176],{"class":1175},[1150,1972,1973],{"class":1152,"line":984},[1150,1974,1975],{"class":1175}," * Inserts all of the elements in the specified collection into this\n",[1150,1977,1978],{"class":1152,"line":1001},[1150,1979,1980],{"class":1175}," * list, starting at the specified position.  Shifts the element\n",[1150,1982,1983],{"class":1152,"line":1018},[1150,1984,1985],{"class":1175}," * currently at that position (if any) and any subsequent elements to\n",[1150,1987,1988],{"class":1152,"line":1029},[1150,1989,1990],{"class":1175}," * the right (increases their indices).  The new elements will appear\n",[1150,1992,1993],{"class":1152,"line":1043},[1150,1994,1995],{"class":1175}," * in the list in the order that they are returned by the\n",[1150,1997,1998],{"class":1152,"line":1090},[1150,1999,2000],{"class":1175}," * specified collection's iterator.\n",[1150,2002,2003],{"class":1152,"line":1199},[1150,2004,1497],{"class":1175},[1150,2006,2007,2009,2011,2013],{"class":1152,"line":1213},[1150,2008,1502],{"class":1175},[1150,2010,1505],{"class":1156},[1150,2012,1735],{"class":1331},[1150,2014,2015],{"class":1175}," index at which to insert the first element\n",[1150,2017,2018],{"class":1152,"line":1218},[1150,2019,2020],{"class":1175}," *              from the specified collection\n",[1150,2022,2023,2025,2027,2029],{"class":1152,"line":1223},[1150,2024,1502],{"class":1175},[1150,2026,1505],{"class":1156},[1150,2028,1898],{"class":1331},[1150,2030,1901],{"class":1175},[1150,2032,2033,2035,2037],{"class":1152,"line":1229},[1150,2034,1502],{"class":1175},[1150,2036,1652],{"class":1156},[1150,2038,1910],{"class":1175},[1150,2040,2041,2043,2045,2047],{"class":1152,"line":1234},[1150,2042,1502],{"class":1175},[1150,2044,1518],{"class":1156},[1150,2046,1759],{"class":1278},[1150,2048,1762],{"class":1175},[1150,2050,2051,2053,2055,2057],{"class":1152,"line":1240},[1150,2052,1502],{"class":1175},[1150,2054,1518],{"class":1156},[1150,2056,1521],{"class":1278},[1150,2058,1524],{"class":1175},[1150,2060,2061],{"class":1152,"line":1245},[1150,2062,1196],{"class":1175},[1150,2064,2065,2067,2069,2071,2073,2075,2078,2080,2082,2084],{"class":1152,"line":1531},[1150,2066,1443],{"class":1156},[1150,2068,1666],{"class":1156},[1150,2070,1933],{"class":1278},[1150,2072,1778],{"class":1163},[1150,2074,1781],{"class":1156},[1150,2076,2077],{"class":1163}," index, Collection",[1150,2079,1541],{"class":1156},[1150,2081,1544],{"class":1163},[1150,2083,1547],{"class":1156},[1150,2085,1550],{"class":1163},[1150,2087,2088,2090],{"class":1152,"line":1553},[1150,2089,1789],{"class":1278},[1150,2091,1792],{"class":1163},[1150,2093,2094],{"class":1152,"line":1561},[1150,2095,1170],{"emptyLinePlaceholder":1169},[1150,2097,2098,2101,2104,2106,2109,2112],{"class":1152,"line":1575},[1150,2099,2100],{"class":1156},"    Object",[1150,2102,2103],{"class":1163},"[] a ",[1150,2105,1363],{"class":1156},[1150,2107,2108],{"class":1163}," c.",[1150,2110,2111],{"class":1278},"toArray",[1150,2113,1558],{"class":1163},[1150,2115,2117,2120,2123,2125],{"class":1152,"line":2116},20,[1150,2118,2119],{"class":1156},"    int",[1150,2121,2122],{"class":1163}," numNew ",[1150,2124,1363],{"class":1156},[1150,2126,2127],{"class":1163}," a.length;\n",[1150,2129,2131,2133,2136,2138,2140],{"class":1152,"line":2130},21,[1150,2132,1801],{"class":1156},[1150,2134,2135],{"class":1163}," (numNew ",[1150,2137,1807],{"class":1156},[1150,2139,1462],{"class":1356},[1150,2141,2142],{"class":1163},")\n",[1150,2144,2146,2149,2152],{"class":1152,"line":2145},22,[1150,2147,2148],{"class":1156},"        return",[1150,2150,2151],{"class":1356}," false",[1150,2153,1465],{"class":1163},[1150,2155,2157],{"class":1152,"line":2156},23,[1150,2158,1170],{"emptyLinePlaceholder":1169},[1150,2160,2162,2164,2166],{"class":1152,"line":2161},24,[1150,2163,1297],{"class":1163},[1150,2165,1207],{"class":1156},[1150,2167,2168],{"class":1163},"> pred, succ;\n",[1150,2170,2172,2174,2176,2178],{"class":1152,"line":2171},25,[1150,2173,1801],{"class":1156},[1150,2175,1804],{"class":1163},[1150,2177,1807],{"class":1156},[1150,2179,2180],{"class":1163}," size) {\n",[1150,2182,2184,2187,2189,2192],{"class":1152,"line":2183},26,[1150,2185,2186],{"class":1163},"        succ ",[1150,2188,1363],{"class":1156},[1150,2190,2191],{"class":1356}," null",[1150,2193,1465],{"class":1163},[1150,2195,2197,2200,2202],{"class":1152,"line":2196},27,[1150,2198,2199],{"class":1163},"        pred ",[1150,2201,1363],{"class":1156},[1150,2203,2204],{"class":1163}," last;\n",[1150,2206,2208,2211,2214],{"class":1152,"line":2207},28,[1150,2209,2210],{"class":1163},"    } ",[1150,2212,2213],{"class":1156},"else",[1150,2215,2216],{"class":1163}," {\n",[1150,2218,2220,2222,2224,2227],{"class":1152,"line":2219},29,[1150,2221,2186],{"class":1163},[1150,2223,1363],{"class":1156},[1150,2225,2226],{"class":1278}," node",[1150,2228,1792],{"class":1163},[1150,2230,2232,2234,2236],{"class":1152,"line":2231},30,[1150,2233,2199],{"class":1163},[1150,2235,1363],{"class":1156},[1150,2237,2238],{"class":1163}," succ.prev;\n",[1150,2240,2242],{"class":1152,"line":2241},31,[1150,2243,1395],{"class":1163},[1150,2245,2247],{"class":1152,"line":2246},32,[1150,2248,1170],{"emptyLinePlaceholder":1169},[1150,2250,2252,2255,2258,2261],{"class":1152,"line":2251},33,[1150,2253,2254],{"class":1156},"    for",[1150,2256,2257],{"class":1163}," (Object o ",[1150,2259,2260],{"class":1156},":",[1150,2262,2263],{"class":1163}," a) {\n",[1150,2265,2267,2270,2273,2275,2279,2282,2284],{"class":1152,"line":2266},34,[1150,2268,2269],{"class":1163},"        @",[1150,2271,2272],{"class":1156},"SuppressWarnings",[1150,2274,1778],{"class":1163},[1150,2276,2278],{"class":2277},"sIIMD","\"unchecked\"",[1150,2280,2281],{"class":1163},") E e ",[1150,2283,1363],{"class":1156},[1150,2285,2286],{"class":1163}," (E) o;\n",[1150,2288,2290,2293,2295,2298,2300,2303,2306,2309],{"class":1152,"line":2289},35,[1150,2291,2292],{"class":1163},"        Node\u003C",[1150,2294,1207],{"class":1156},[1150,2296,2297],{"class":1163},"> newNode ",[1150,2299,1363],{"class":1156},[1150,2301,2302],{"class":1156}," new",[1150,2304,2305],{"class":1163}," Node\u003C>(pred, e, ",[1150,2307,2308],{"class":1356},"null",[1150,2310,2311],{"class":1163},");\n",[1150,2313,2315,2318,2321,2323,2325],{"class":1152,"line":2314},36,[1150,2316,2317],{"class":1156},"        if",[1150,2319,2320],{"class":1163}," (pred ",[1150,2322,1807],{"class":1156},[1150,2324,2191],{"class":1356},[1150,2326,2142],{"class":1163},[1150,2328,2330,2333,2335],{"class":1152,"line":2329},37,[1150,2331,2332],{"class":1163},"            first ",[1150,2334,1363],{"class":1156},[1150,2336,2337],{"class":1163}," newNode;\n",[1150,2339,2341],{"class":1152,"line":2340},38,[1150,2342,2343],{"class":1156},"        else\n",[1150,2345,2347,2350,2352],{"class":1152,"line":2346},39,[1150,2348,2349],{"class":1163},"            pred.next ",[1150,2351,1363],{"class":1156},[1150,2353,2337],{"class":1163},[1150,2355,2357,2359,2361],{"class":1152,"line":2356},40,[1150,2358,2199],{"class":1163},[1150,2360,1363],{"class":1156},[1150,2362,2337],{"class":1163},[1150,2364,2366],{"class":1152,"line":2365},41,[1150,2367,1395],{"class":1163},[1150,2369,2371],{"class":1152,"line":2370},42,[1150,2372,1170],{"emptyLinePlaceholder":1169},[1150,2374,2376,2378,2381,2383,2385],{"class":1152,"line":2375},43,[1150,2377,1801],{"class":1156},[1150,2379,2380],{"class":1163}," (succ ",[1150,2382,1807],{"class":1156},[1150,2384,2191],{"class":1356},[1150,2386,1351],{"class":1163},[1150,2388,2390,2393,2395],{"class":1152,"line":2389},44,[1150,2391,2392],{"class":1163},"        last ",[1150,2394,1363],{"class":1156},[1150,2396,2397],{"class":1163}," pred;\n",[1150,2399,2401,2403,2405],{"class":1152,"line":2400},45,[1150,2402,2210],{"class":1163},[1150,2404,2213],{"class":1156},[1150,2406,2216],{"class":1163},[1150,2408,2410,2413,2415],{"class":1152,"line":2409},46,[1150,2411,2412],{"class":1163},"        pred.next ",[1150,2414,1363],{"class":1156},[1150,2416,2417],{"class":1163}," succ;\n",[1150,2419,2421,2424,2426],{"class":1152,"line":2420},47,[1150,2422,2423],{"class":1163},"        succ.prev ",[1150,2425,1363],{"class":1156},[1150,2427,2397],{"class":1163},[1150,2429,2431],{"class":1152,"line":2430},48,[1150,2432,1395],{"class":1163},[1150,2434,2436],{"class":1152,"line":2435},49,[1150,2437,1170],{"emptyLinePlaceholder":1169},[1150,2439,2441,2444,2447],{"class":1152,"line":2440},50,[1150,2442,2443],{"class":1163},"    size ",[1150,2445,2446],{"class":1156},"+=",[1150,2448,2449],{"class":1163}," numNew;\n",[1150,2451,2453,2456,2459],{"class":1152,"line":2452},51,[1150,2454,2455],{"class":1163},"    modCount",[1150,2457,2458],{"class":1156},"++",[1150,2460,1465],{"class":1163},[1150,2462,2464,2466,2468],{"class":1152,"line":2463},52,[1150,2465,1685],{"class":1156},[1150,2467,1688],{"class":1356},[1150,2469,1465],{"class":1163},[1150,2471,2473],{"class":1152,"line":2472},53,[1150,2474,1400],{"class":1163},[913,2476,2477],{},[909,2478,2479],{},"addFirst(E e)：向链表头部插入元素 e",[1142,2481,2483],{"className":1144,"code":2482,"language":1146,"meta":11,"style":11},"\u002F**\n * Inserts the specified element at the beginning of this list.\n *\n * @param e the element to add\n *\u002F\npublic void addFirst(E e) {\n    linkFirst(e);\n}\n",[950,2484,2485,2489,2494,2498,2509,2513,2524,2531],{"__ignoreMap":11},[1150,2486,2487],{"class":1152,"line":1153},[1150,2488,1176],{"class":1175},[1150,2490,2491],{"class":1152,"line":984},[1150,2492,2493],{"class":1175}," * Inserts the specified element at the beginning of this list.\n",[1150,2495,2496],{"class":1152,"line":1001},[1150,2497,1497],{"class":1175},[1150,2499,2500,2502,2504,2506],{"class":1152,"line":1018},[1150,2501,1502],{"class":1175},[1150,2503,1505],{"class":1156},[1150,2505,1642],{"class":1331},[1150,2507,2508],{"class":1175}," the element to add\n",[1150,2510,2511],{"class":1152,"line":1029},[1150,2512,1196],{"class":1175},[1150,2514,2515,2517,2519,2522],{"class":1152,"line":1043},[1150,2516,1443],{"class":1156},[1150,2518,1773],{"class":1156},[1150,2520,2521],{"class":1278}," addFirst",[1150,2523,1672],{"class":1163},[1150,2525,2526,2529],{"class":1152,"line":1090},[1150,2527,2528],{"class":1278},"    linkFirst",[1150,2530,1680],{"class":1163},[1150,2532,2533],{"class":1152,"line":1199},[1150,2534,1400],{"class":1163},[913,2536,2537],{},[909,2538,2539],{},"addLast(E e)：向链表尾部插入元素 e",[1142,2541,2543],{"className":1144,"code":2542,"language":1146,"meta":11,"style":11},"\u002F**\n * Appends the specified element to the end of this list.\n *\n * \u003Cp>This method is equivalent to {@link #add}.\n *\n * @param e the element to add\n *\u002F\npublic void addLast(E e) {\n    linkLast(e);\n}\n",[950,2544,2545,2549,2553,2557,2562,2566,2576,2580,2591,2597],{"__ignoreMap":11},[1150,2546,2547],{"class":1152,"line":1153},[1150,2548,1176],{"class":1175},[1150,2550,2551],{"class":1152,"line":984},[1150,2552,1620],{"class":1175},[1150,2554,2555],{"class":1152,"line":1001},[1150,2556,1497],{"class":1175},[1150,2558,2559],{"class":1152,"line":1018},[1150,2560,2561],{"class":1175}," * \u003Cp>This method is equivalent to {@link #add}.\n",[1150,2563,2564],{"class":1152,"line":1029},[1150,2565,1497],{"class":1175},[1150,2567,2568,2570,2572,2574],{"class":1152,"line":1043},[1150,2569,1502],{"class":1175},[1150,2571,1505],{"class":1156},[1150,2573,1642],{"class":1331},[1150,2575,2508],{"class":1175},[1150,2577,2578],{"class":1152,"line":1090},[1150,2579,1196],{"class":1175},[1150,2581,2582,2584,2586,2589],{"class":1152,"line":1199},[1150,2583,1443],{"class":1156},[1150,2585,1773],{"class":1156},[1150,2587,2588],{"class":1278}," addLast",[1150,2590,1672],{"class":1163},[1150,2592,2593,2595],{"class":1152,"line":1213},[1150,2594,1677],{"class":1278},[1150,2596,1680],{"class":1163},[1150,2598,2599],{"class":1152,"line":1218},[1150,2600,1400],{"class":1163},[892,2602,2603],{},"从上面和 Add 操作相关的方法源码不难看出，绝大多数的实现都是基于",[913,2605,2606,2612],{},[909,2607,2608,2611],{},[950,2609,2610],{},"linkFirst(E e)","（向链表头部插入元素 e）",[909,2613,2614,2617],{},[950,2615,2616],{},"linkLast(E e)"," ：（向链表尾部插入元素 e）",[892,2619,2620],{},"这两个方法实现的。下面对这两个方法的源码进行解析：",[1142,2622,2624],{"className":1144,"code":2623,"language":1146,"meta":11,"style":11},"\u002F**\n * Links e as first element.\n *\u002F\nprivate void linkFirst(E e) {\n    final Node\u003CE> f = first;\n    final Node\u003CE> newNode = new Node\u003C>(null, e, f);\n    first = newNode;\n    if (f == null)\n        last = newNode;\n    else\n        f.prev = newNode;\n    size++;\n    modCount++;\n}\n\n\u002F**\n * Links e as last element.\n *\u002F\nvoid linkLast(E e) {\n    final Node\u003CE> l = last;\n    final Node\u003CE> newNode = new Node\u003C>(l, e, null);\n    last = newNode;\n    if (l == null)\n        first = newNode;\n    else\n        l.next = newNode;\n    size++;\n    modCount++;\n}\n",[950,2625,2626,2630,2635,2639,2650,2667,2689,2698,2711,2719,2723,2732,2741,2749,2753,2757,2761,2766,2770,2780,2795,2816,2825,2838,2847,2851,2860,2868,2876],{"__ignoreMap":11},[1150,2627,2628],{"class":1152,"line":1153},[1150,2629,1176],{"class":1175},[1150,2631,2632],{"class":1152,"line":984},[1150,2633,2634],{"class":1175}," * Links e as first element.\n",[1150,2636,2637],{"class":1152,"line":1001},[1150,2638,1196],{"class":1175},[1150,2640,2641,2643,2645,2648],{"class":1152,"line":1018},[1150,2642,1269],{"class":1156},[1150,2644,1773],{"class":1156},[1150,2646,2647],{"class":1278}," linkFirst",[1150,2649,1672],{"class":1163},[1150,2651,2652,2655,2657,2659,2662,2664],{"class":1152,"line":1029},[1150,2653,2654],{"class":1156},"    final",[1150,2656,1204],{"class":1163},[1150,2658,1207],{"class":1156},[1150,2660,2661],{"class":1163},"> f ",[1150,2663,1363],{"class":1156},[1150,2665,2666],{"class":1163}," first;\n",[1150,2668,2669,2671,2673,2675,2677,2679,2681,2684,2686],{"class":1152,"line":1043},[1150,2670,2654],{"class":1156},[1150,2672,1204],{"class":1163},[1150,2674,1207],{"class":1156},[1150,2676,2297],{"class":1163},[1150,2678,1363],{"class":1156},[1150,2680,2302],{"class":1156},[1150,2682,2683],{"class":1163}," Node\u003C>(",[1150,2685,2308],{"class":1356},[1150,2687,2688],{"class":1163},", e, f);\n",[1150,2690,2691,2694,2696],{"class":1152,"line":1090},[1150,2692,2693],{"class":1163},"    first ",[1150,2695,1363],{"class":1156},[1150,2697,2337],{"class":1163},[1150,2699,2700,2702,2705,2707,2709],{"class":1152,"line":1199},[1150,2701,1801],{"class":1156},[1150,2703,2704],{"class":1163}," (f ",[1150,2706,1807],{"class":1156},[1150,2708,2191],{"class":1356},[1150,2710,2142],{"class":1163},[1150,2712,2713,2715,2717],{"class":1152,"line":1213},[1150,2714,2392],{"class":1163},[1150,2716,1363],{"class":1156},[1150,2718,2337],{"class":1163},[1150,2720,2721],{"class":1152,"line":1218},[1150,2722,1823],{"class":1156},[1150,2724,2725,2728,2730],{"class":1152,"line":1223},[1150,2726,2727],{"class":1163},"        f.prev ",[1150,2729,1363],{"class":1156},[1150,2731,2337],{"class":1163},[1150,2733,2734,2737,2739],{"class":1152,"line":1229},[1150,2735,2736],{"class":1163},"    size",[1150,2738,2458],{"class":1156},[1150,2740,1465],{"class":1163},[1150,2742,2743,2745,2747],{"class":1152,"line":1234},[1150,2744,2455],{"class":1163},[1150,2746,2458],{"class":1156},[1150,2748,1465],{"class":1163},[1150,2750,2751],{"class":1152,"line":1240},[1150,2752,1400],{"class":1163},[1150,2754,2755],{"class":1152,"line":1245},[1150,2756,1170],{"emptyLinePlaceholder":1169},[1150,2758,2759],{"class":1152,"line":1531},[1150,2760,1176],{"class":1175},[1150,2762,2763],{"class":1152,"line":1553},[1150,2764,2765],{"class":1175}," * Links e as last element.\n",[1150,2767,2768],{"class":1152,"line":1561},[1150,2769,1196],{"class":1175},[1150,2771,2772,2775,2778],{"class":1152,"line":1575},[1150,2773,2774],{"class":1156},"void",[1150,2776,2777],{"class":1278}," linkLast",[1150,2779,1672],{"class":1163},[1150,2781,2782,2784,2786,2788,2791,2793],{"class":1152,"line":2116},[1150,2783,2654],{"class":1156},[1150,2785,1204],{"class":1163},[1150,2787,1207],{"class":1156},[1150,2789,2790],{"class":1163},"> l ",[1150,2792,1363],{"class":1156},[1150,2794,2204],{"class":1163},[1150,2796,2797,2799,2801,2803,2805,2807,2809,2812,2814],{"class":1152,"line":2130},[1150,2798,2654],{"class":1156},[1150,2800,1204],{"class":1163},[1150,2802,1207],{"class":1156},[1150,2804,2297],{"class":1163},[1150,2806,1363],{"class":1156},[1150,2808,2302],{"class":1156},[1150,2810,2811],{"class":1163}," Node\u003C>(l, e, ",[1150,2813,2308],{"class":1356},[1150,2815,2311],{"class":1163},[1150,2817,2818,2821,2823],{"class":1152,"line":2145},[1150,2819,2820],{"class":1163},"    last ",[1150,2822,1363],{"class":1156},[1150,2824,2337],{"class":1163},[1150,2826,2827,2829,2832,2834,2836],{"class":1152,"line":2156},[1150,2828,1801],{"class":1156},[1150,2830,2831],{"class":1163}," (l ",[1150,2833,1807],{"class":1156},[1150,2835,2191],{"class":1356},[1150,2837,2142],{"class":1163},[1150,2839,2840,2843,2845],{"class":1152,"line":2161},[1150,2841,2842],{"class":1163},"        first ",[1150,2844,1363],{"class":1156},[1150,2846,2337],{"class":1163},[1150,2848,2849],{"class":1152,"line":2171},[1150,2850,1823],{"class":1156},[1150,2852,2853,2856,2858],{"class":1152,"line":2183},[1150,2854,2855],{"class":1163},"        l.next ",[1150,2857,1363],{"class":1156},[1150,2859,2337],{"class":1163},[1150,2861,2862,2864,2866],{"class":1152,"line":2196},[1150,2863,2736],{"class":1163},[1150,2865,2458],{"class":1156},[1150,2867,1465],{"class":1163},[1150,2869,2870,2872,2874],{"class":1152,"line":2207},[1150,2871,2455],{"class":1163},[1150,2873,2458],{"class":1156},[1150,2875,1465],{"class":1163},[1150,2877,2878],{"class":1152,"line":2219},[1150,2879,1400],{"class":1163},[1112,2881,2882],{"id":2882},"get方法",[892,2884,2885],{},"LinkedList 中提供了 3 个关于获取元素的方法：get(int index)、getFirst()、getLast()",[913,2887,2888],{},[909,2889,2890],{},"get(int index)：获取指定下标的元素",[1142,2892,2894],{"className":1144,"code":2893,"language":1146,"meta":11,"style":11},"\u002F**\n * Returns the element at the specified position in this list.\n *\n * @param index index of the element to return\n * @return the element at the specified position in this list\n * @throws IndexOutOfBoundsException {@inheritDoc}\n *\u002F\npublic E get(int index) {\n    checkElementIndex(index);\n    return node(index).item;\n}\n",[950,2895,2896,2900,2905,2909,2920,2929,2939,2943,2960,2967,2976],{"__ignoreMap":11},[1150,2897,2898],{"class":1152,"line":1153},[1150,2899,1176],{"class":1175},[1150,2901,2902],{"class":1152,"line":984},[1150,2903,2904],{"class":1175}," * Returns the element at the specified position in this list.\n",[1150,2906,2907],{"class":1152,"line":1001},[1150,2908,1497],{"class":1175},[1150,2910,2911,2913,2915,2917],{"class":1152,"line":1018},[1150,2912,1502],{"class":1175},[1150,2914,1505],{"class":1156},[1150,2916,1735],{"class":1331},[1150,2918,2919],{"class":1175}," index of the element to return\n",[1150,2921,2922,2924,2926],{"class":1152,"line":1029},[1150,2923,1502],{"class":1175},[1150,2925,1652],{"class":1156},[1150,2927,2928],{"class":1175}," the element at the specified position in this list\n",[1150,2930,2931,2933,2935,2937],{"class":1152,"line":1043},[1150,2932,1502],{"class":1175},[1150,2934,1518],{"class":1156},[1150,2936,1759],{"class":1278},[1150,2938,1762],{"class":1175},[1150,2940,2941],{"class":1152,"line":1090},[1150,2942,1196],{"class":1175},[1150,2944,2945,2947,2950,2953,2955,2957],{"class":1152,"line":1199},[1150,2946,1443],{"class":1156},[1150,2948,2949],{"class":1163}," E ",[1150,2951,2952],{"class":1278},"get",[1150,2954,1778],{"class":1163},[1150,2956,1781],{"class":1156},[1150,2958,2959],{"class":1163}," index) {\n",[1150,2961,2962,2965],{"class":1152,"line":1213},[1150,2963,2964],{"class":1278},"    checkElementIndex",[1150,2966,1792],{"class":1163},[1150,2968,2969,2971,2973],{"class":1152,"line":1218},[1150,2970,1685],{"class":1156},[1150,2972,2226],{"class":1278},[1150,2974,2975],{"class":1163},"(index).item;\n",[1150,2977,2978],{"class":1152,"line":1223},[1150,2979,1400],{"class":1163},[913,2981,2982],{},[909,2983,2984],{},"getFirst()：获取首元素",[1142,2986,2988],{"className":1144,"code":2987,"language":1146,"meta":11,"style":11},"\u002F**\n * Returns the first element in this list.\n *\n * @return the first element in this list\n * @throws NoSuchElementException if this list is empty\n *\u002F\npublic E getFirst() {\n    final Node\u003CE> f = first;\n    if (f == null)\n        throw new NoSuchElementException();\n    return f.item;\n}\n",[950,2989,2990,2994,2999,3003,3012,3024,3028,3039,3053,3065,3076,3083],{"__ignoreMap":11},[1150,2991,2992],{"class":1152,"line":1153},[1150,2993,1176],{"class":1175},[1150,2995,2996],{"class":1152,"line":984},[1150,2997,2998],{"class":1175}," * Returns the first element in this list.\n",[1150,3000,3001],{"class":1152,"line":1001},[1150,3002,1497],{"class":1175},[1150,3004,3005,3007,3009],{"class":1152,"line":1018},[1150,3006,1502],{"class":1175},[1150,3008,1652],{"class":1156},[1150,3010,3011],{"class":1175}," the first element in this list\n",[1150,3013,3014,3016,3018,3021],{"class":1152,"line":1029},[1150,3015,1502],{"class":1175},[1150,3017,1518],{"class":1156},[1150,3019,3020],{"class":1278}," NoSuchElementException",[1150,3022,3023],{"class":1175}," if this list is empty\n",[1150,3025,3026],{"class":1152,"line":1043},[1150,3027,1196],{"class":1175},[1150,3029,3030,3032,3034,3037],{"class":1152,"line":1090},[1150,3031,1443],{"class":1156},[1150,3033,2949],{"class":1163},[1150,3035,3036],{"class":1278},"getFirst",[1150,3038,1449],{"class":1163},[1150,3040,3041,3043,3045,3047,3049,3051],{"class":1152,"line":1199},[1150,3042,2654],{"class":1156},[1150,3044,1204],{"class":1163},[1150,3046,1207],{"class":1156},[1150,3048,2661],{"class":1163},[1150,3050,1363],{"class":1156},[1150,3052,2666],{"class":1163},[1150,3054,3055,3057,3059,3061,3063],{"class":1152,"line":1213},[1150,3056,1801],{"class":1156},[1150,3058,2704],{"class":1163},[1150,3060,1807],{"class":1156},[1150,3062,2191],{"class":1356},[1150,3064,2142],{"class":1163},[1150,3066,3067,3070,3072,3074],{"class":1152,"line":1218},[1150,3068,3069],{"class":1156},"        throw",[1150,3071,2302],{"class":1156},[1150,3073,3020],{"class":1278},[1150,3075,1558],{"class":1163},[1150,3077,3078,3080],{"class":1152,"line":1223},[1150,3079,1685],{"class":1156},[1150,3081,3082],{"class":1163}," f.item;\n",[1150,3084,3085],{"class":1152,"line":1229},[1150,3086,1400],{"class":1163},[913,3088,3089],{},[909,3090,3091],{},"getLast()：获取末尾元素",[1142,3093,3095],{"className":1144,"code":3094,"language":1146,"meta":11,"style":11},"\u002F**\n * Returns the last element in this list.\n *\n * @return the last element in this list\n * @throws NoSuchElementException if this list is empty\n *\u002F\npublic E getLast() {\n    final Node\u003CE> l = last;\n    if (l == null)\n        throw new NoSuchElementException();\n    return l.item;\n}\n",[950,3096,3097,3101,3106,3110,3119,3129,3133,3144,3158,3170,3180,3187],{"__ignoreMap":11},[1150,3098,3099],{"class":1152,"line":1153},[1150,3100,1176],{"class":1175},[1150,3102,3103],{"class":1152,"line":984},[1150,3104,3105],{"class":1175}," * Returns the last element in this list.\n",[1150,3107,3108],{"class":1152,"line":1001},[1150,3109,1497],{"class":1175},[1150,3111,3112,3114,3116],{"class":1152,"line":1018},[1150,3113,1502],{"class":1175},[1150,3115,1652],{"class":1156},[1150,3117,3118],{"class":1175}," the last element in this list\n",[1150,3120,3121,3123,3125,3127],{"class":1152,"line":1029},[1150,3122,1502],{"class":1175},[1150,3124,1518],{"class":1156},[1150,3126,3020],{"class":1278},[1150,3128,3023],{"class":1175},[1150,3130,3131],{"class":1152,"line":1043},[1150,3132,1196],{"class":1175},[1150,3134,3135,3137,3139,3142],{"class":1152,"line":1090},[1150,3136,1443],{"class":1156},[1150,3138,2949],{"class":1163},[1150,3140,3141],{"class":1278},"getLast",[1150,3143,1449],{"class":1163},[1150,3145,3146,3148,3150,3152,3154,3156],{"class":1152,"line":1199},[1150,3147,2654],{"class":1156},[1150,3149,1204],{"class":1163},[1150,3151,1207],{"class":1156},[1150,3153,2790],{"class":1163},[1150,3155,1363],{"class":1156},[1150,3157,2204],{"class":1163},[1150,3159,3160,3162,3164,3166,3168],{"class":1152,"line":1213},[1150,3161,1801],{"class":1156},[1150,3163,2831],{"class":1163},[1150,3165,1807],{"class":1156},[1150,3167,2191],{"class":1356},[1150,3169,2142],{"class":1163},[1150,3171,3172,3174,3176,3178],{"class":1152,"line":1218},[1150,3173,3069],{"class":1156},[1150,3175,2302],{"class":1156},[1150,3177,3020],{"class":1278},[1150,3179,1558],{"class":1163},[1150,3181,3182,3184],{"class":1152,"line":1223},[1150,3183,1685],{"class":1156},[1150,3185,3186],{"class":1163}," l.item;\n",[1150,3188,3189],{"class":1152,"line":1229},[1150,3190,1400],{"class":1163},[1112,3192,3193],{"id":3193},"remove方法",[892,3195,3196],{},"LinkedList 中提供了 7 个关于删除元素的方法：remove()、remove(int index)、remove(Object o)、removeFirst()、removeLast()、removeFirstOccurrence(Object o)、removeLastOccurrence(Object o)",[913,3198,3199],{},[909,3200,3201],{},"remove()：删除头节点引用",[1142,3203,3205],{"className":1144,"code":3204,"language":1146,"meta":11,"style":11},"\u002F**\n * Retrieves and removes the head (first element) of this list.\n *\n * @return the head of this list\n * @throws NoSuchElementException if this list is empty\n * @since 1.5\n *\u002F\npublic E remove() {\n    return removeFirst();\n}\n",[950,3206,3207,3211,3216,3220,3229,3239,3249,3253,3264,3273],{"__ignoreMap":11},[1150,3208,3209],{"class":1152,"line":1153},[1150,3210,1176],{"class":1175},[1150,3212,3213],{"class":1152,"line":984},[1150,3214,3215],{"class":1175}," * Retrieves and removes the head (first element) of this list.\n",[1150,3217,3218],{"class":1152,"line":1001},[1150,3219,1497],{"class":1175},[1150,3221,3222,3224,3226],{"class":1152,"line":1018},[1150,3223,1502],{"class":1175},[1150,3225,1652],{"class":1156},[1150,3227,3228],{"class":1175}," the head of this list\n",[1150,3230,3231,3233,3235,3237],{"class":1152,"line":1029},[1150,3232,1502],{"class":1175},[1150,3234,1518],{"class":1156},[1150,3236,3020],{"class":1278},[1150,3238,3023],{"class":1175},[1150,3240,3241,3243,3246],{"class":1152,"line":1043},[1150,3242,1502],{"class":1175},[1150,3244,3245],{"class":1156},"@since",[1150,3247,3248],{"class":1175}," 1.5\n",[1150,3250,3251],{"class":1152,"line":1090},[1150,3252,1196],{"class":1175},[1150,3254,3255,3257,3259,3262],{"class":1152,"line":1199},[1150,3256,1443],{"class":1156},[1150,3258,2949],{"class":1163},[1150,3260,3261],{"class":1278},"remove",[1150,3263,1449],{"class":1163},[1150,3265,3266,3268,3271],{"class":1152,"line":1213},[1150,3267,1685],{"class":1156},[1150,3269,3270],{"class":1278}," removeFirst",[1150,3272,1558],{"class":1163},[1150,3274,3275],{"class":1152,"line":1218},[1150,3276,1400],{"class":1163},[913,3278,3279],{},[909,3280,3281],{},"remove(int index)：删除索引为 index 的引用",[1142,3283,3285],{"className":1144,"code":3284,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes the element at the specified position in this list.  Shifts any\n * subsequent elements to the left (subtracts one from their indices).\n * Returns the element that was removed from the list.\n *\n * @param index the index of the element to be removed\n * @return the element previously at the specified position\n * @throws IndexOutOfBoundsException {@inheritDoc}\n *\u002F\npublic E remove(int index) {\n    checkElementIndex(index);\n    return unlink(node(index));\n}\n",[950,3286,3287,3291,3296,3301,3306,3310,3321,3330,3340,3344,3358,3364,3377],{"__ignoreMap":11},[1150,3288,3289],{"class":1152,"line":1153},[1150,3290,1176],{"class":1175},[1150,3292,3293],{"class":1152,"line":984},[1150,3294,3295],{"class":1175}," * Removes the element at the specified position in this list.  Shifts any\n",[1150,3297,3298],{"class":1152,"line":1001},[1150,3299,3300],{"class":1175}," * subsequent elements to the left (subtracts one from their indices).\n",[1150,3302,3303],{"class":1152,"line":1018},[1150,3304,3305],{"class":1175}," * Returns the element that was removed from the list.\n",[1150,3307,3308],{"class":1152,"line":1029},[1150,3309,1497],{"class":1175},[1150,3311,3312,3314,3316,3318],{"class":1152,"line":1043},[1150,3313,1502],{"class":1175},[1150,3315,1505],{"class":1156},[1150,3317,1735],{"class":1331},[1150,3319,3320],{"class":1175}," the index of the element to be removed\n",[1150,3322,3323,3325,3327],{"class":1152,"line":1090},[1150,3324,1502],{"class":1175},[1150,3326,1652],{"class":1156},[1150,3328,3329],{"class":1175}," the element previously at the specified position\n",[1150,3331,3332,3334,3336,3338],{"class":1152,"line":1199},[1150,3333,1502],{"class":1175},[1150,3335,1518],{"class":1156},[1150,3337,1759],{"class":1278},[1150,3339,1762],{"class":1175},[1150,3341,3342],{"class":1152,"line":1213},[1150,3343,1196],{"class":1175},[1150,3345,3346,3348,3350,3352,3354,3356],{"class":1152,"line":1218},[1150,3347,1443],{"class":1156},[1150,3349,2949],{"class":1163},[1150,3351,3261],{"class":1278},[1150,3353,1778],{"class":1163},[1150,3355,1781],{"class":1156},[1150,3357,2959],{"class":1163},[1150,3359,3360,3362],{"class":1152,"line":1223},[1150,3361,2964],{"class":1278},[1150,3363,1792],{"class":1163},[1150,3365,3366,3368,3371,3373,3375],{"class":1152,"line":1229},[1150,3367,1685],{"class":1156},[1150,3369,3370],{"class":1278}," unlink",[1150,3372,1778],{"class":1163},[1150,3374,1834],{"class":1278},[1150,3376,1837],{"class":1163},[1150,3378,3379],{"class":1152,"line":1234},[1150,3380,1400],{"class":1163},[913,3382,3383],{},[909,3384,3385],{},"remove(Object o)：删除列表中元素 o 第一次出现的引用",[1142,3387,3389],{"className":1144,"code":3388,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes the first occurrence of the specified element from this list,\n * if it is present.  If this list does not contain the element, it is\n * unchanged.  More formally, removes the element with the lowest index\n * {@code i} such that\n * \u003Ctt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))\u003C\u002Ftt>\n * (if such an element exists).  Returns {@code true} if this list\n * contained the specified element (or equivalently, if this list\n * changed as a result of the call).\n *\n * @param o element to be removed from this list, if present\n * @return {@code true} if this list contained the specified element\n *\u002F\npublic boolean remove(Object o) {\n    if (o == null) {\n        for (Node\u003CE> x = first; x != null; x = x.next) {\n            if (x.item == null) {\n                unlink(x);\n                return true;\n            }\n        }\n    } else {\n        for (Node\u003CE> x = first; x != null; x = x.next) {\n            if (o.equals(x.item)) {\n                unlink(x);\n                return true;\n            }\n        }\n    }\n    return false;\n}\n",[950,3390,3391,3395,3400,3405,3410,3415,3420,3425,3430,3435,3439,3451,3460,3464,3476,3489,3520,3534,3542,3551,3556,3561,3569,3593,3606,3612,3620,3624,3628,3632,3640],{"__ignoreMap":11},[1150,3392,3393],{"class":1152,"line":1153},[1150,3394,1176],{"class":1175},[1150,3396,3397],{"class":1152,"line":984},[1150,3398,3399],{"class":1175}," * Removes the first occurrence of the specified element from this list,\n",[1150,3401,3402],{"class":1152,"line":1001},[1150,3403,3404],{"class":1175}," * if it is present.  If this list does not contain the element, it is\n",[1150,3406,3407],{"class":1152,"line":1018},[1150,3408,3409],{"class":1175}," * unchanged.  More formally, removes the element with the lowest index\n",[1150,3411,3412],{"class":1152,"line":1029},[1150,3413,3414],{"class":1175}," * {@code i} such that\n",[1150,3416,3417],{"class":1152,"line":1043},[1150,3418,3419],{"class":1175}," * \u003Ctt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))\u003C\u002Ftt>\n",[1150,3421,3422],{"class":1152,"line":1090},[1150,3423,3424],{"class":1175}," * (if such an element exists).  Returns {@code true} if this list\n",[1150,3426,3427],{"class":1152,"line":1199},[1150,3428,3429],{"class":1175}," * contained the specified element (or equivalently, if this list\n",[1150,3431,3432],{"class":1152,"line":1213},[1150,3433,3434],{"class":1175}," * changed as a result of the call).\n",[1150,3436,3437],{"class":1152,"line":1218},[1150,3438,1497],{"class":1175},[1150,3440,3441,3443,3445,3448],{"class":1152,"line":1223},[1150,3442,1502],{"class":1175},[1150,3444,1505],{"class":1156},[1150,3446,3447],{"class":1331}," o",[1150,3449,3450],{"class":1175}," element to be removed from this list, if present\n",[1150,3452,3453,3455,3457],{"class":1152,"line":1229},[1150,3454,1502],{"class":1175},[1150,3456,1652],{"class":1156},[1150,3458,3459],{"class":1175}," {@code true} if this list contained the specified element\n",[1150,3461,3462],{"class":1152,"line":1234},[1150,3463,1196],{"class":1175},[1150,3465,3466,3468,3470,3473],{"class":1152,"line":1240},[1150,3467,1443],{"class":1156},[1150,3469,1666],{"class":1156},[1150,3471,3472],{"class":1278}," remove",[1150,3474,3475],{"class":1163},"(Object o) {\n",[1150,3477,3478,3480,3483,3485,3487],{"class":1152,"line":1245},[1150,3479,1801],{"class":1156},[1150,3481,3482],{"class":1163}," (o ",[1150,3484,1807],{"class":1156},[1150,3486,2191],{"class":1356},[1150,3488,1351],{"class":1163},[1150,3490,3491,3494,3497,3499,3502,3504,3507,3510,3512,3515,3517],{"class":1152,"line":1531},[1150,3492,3493],{"class":1156},"        for",[1150,3495,3496],{"class":1163}," (Node\u003C",[1150,3498,1207],{"class":1156},[1150,3500,3501],{"class":1163},"> x ",[1150,3503,1363],{"class":1156},[1150,3505,3506],{"class":1163}," first; x ",[1150,3508,3509],{"class":1156},"!=",[1150,3511,2191],{"class":1356},[1150,3513,3514],{"class":1163},"; x ",[1150,3516,1363],{"class":1156},[1150,3518,3519],{"class":1163}," x.next) {\n",[1150,3521,3522,3525,3528,3530,3532],{"class":1152,"line":1553},[1150,3523,3524],{"class":1156},"            if",[1150,3526,3527],{"class":1163}," (x.item ",[1150,3529,1807],{"class":1156},[1150,3531,2191],{"class":1356},[1150,3533,1351],{"class":1163},[1150,3535,3536,3539],{"class":1152,"line":1561},[1150,3537,3538],{"class":1278},"                unlink",[1150,3540,3541],{"class":1163},"(x);\n",[1150,3543,3544,3547,3549],{"class":1152,"line":1575},[1150,3545,3546],{"class":1156},"                return",[1150,3548,1688],{"class":1356},[1150,3550,1465],{"class":1163},[1150,3552,3553],{"class":1152,"line":2116},[1150,3554,3555],{"class":1163},"            }\n",[1150,3557,3558],{"class":1152,"line":2130},[1150,3559,3560],{"class":1163},"        }\n",[1150,3562,3563,3565,3567],{"class":1152,"line":2145},[1150,3564,2210],{"class":1163},[1150,3566,2213],{"class":1156},[1150,3568,2216],{"class":1163},[1150,3570,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591],{"class":1152,"line":2156},[1150,3572,3493],{"class":1156},[1150,3574,3496],{"class":1163},[1150,3576,1207],{"class":1156},[1150,3578,3501],{"class":1163},[1150,3580,1363],{"class":1156},[1150,3582,3506],{"class":1163},[1150,3584,3509],{"class":1156},[1150,3586,2191],{"class":1356},[1150,3588,3514],{"class":1163},[1150,3590,1363],{"class":1156},[1150,3592,3519],{"class":1163},[1150,3594,3595,3597,3600,3603],{"class":1152,"line":2161},[1150,3596,3524],{"class":1156},[1150,3598,3599],{"class":1163}," (o.",[1150,3601,3602],{"class":1278},"equals",[1150,3604,3605],{"class":1163},"(x.item)) {\n",[1150,3607,3608,3610],{"class":1152,"line":2171},[1150,3609,3538],{"class":1278},[1150,3611,3541],{"class":1163},[1150,3613,3614,3616,3618],{"class":1152,"line":2183},[1150,3615,3546],{"class":1156},[1150,3617,1688],{"class":1356},[1150,3619,1465],{"class":1163},[1150,3621,3622],{"class":1152,"line":2196},[1150,3623,3555],{"class":1163},[1150,3625,3626],{"class":1152,"line":2207},[1150,3627,3560],{"class":1163},[1150,3629,3630],{"class":1152,"line":2219},[1150,3631,1395],{"class":1163},[1150,3633,3634,3636,3638],{"class":1152,"line":2231},[1150,3635,1685],{"class":1156},[1150,3637,2151],{"class":1356},[1150,3639,1465],{"class":1163},[1150,3641,3642],{"class":1152,"line":2241},[1150,3643,1400],{"class":1163},[913,3645,3646],{},[909,3647,3648],{},"removeFirst()：删除列表中第一个元素",[1142,3650,3652],{"className":1144,"code":3651,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes and returns the first element from this list.\n *\n * @return the first element from this list\n * @throws NoSuchElementException if this list is empty\n *\u002F\npublic E removeFirst() {\n    final Node\u003CE> f = first;\n    if (f == null)\n        throw new NoSuchElementException();\n    return unlinkFirst(f);\n}\n",[950,3653,3654,3658,3663,3667,3676,3686,3690,3701,3715,3727,3737,3747],{"__ignoreMap":11},[1150,3655,3656],{"class":1152,"line":1153},[1150,3657,1176],{"class":1175},[1150,3659,3660],{"class":1152,"line":984},[1150,3661,3662],{"class":1175}," * Removes and returns the first element from this list.\n",[1150,3664,3665],{"class":1152,"line":1001},[1150,3666,1497],{"class":1175},[1150,3668,3669,3671,3673],{"class":1152,"line":1018},[1150,3670,1502],{"class":1175},[1150,3672,1652],{"class":1156},[1150,3674,3675],{"class":1175}," the first element from this list\n",[1150,3677,3678,3680,3682,3684],{"class":1152,"line":1029},[1150,3679,1502],{"class":1175},[1150,3681,1518],{"class":1156},[1150,3683,3020],{"class":1278},[1150,3685,3023],{"class":1175},[1150,3687,3688],{"class":1152,"line":1043},[1150,3689,1196],{"class":1175},[1150,3691,3692,3694,3696,3699],{"class":1152,"line":1090},[1150,3693,1443],{"class":1156},[1150,3695,2949],{"class":1163},[1150,3697,3698],{"class":1278},"removeFirst",[1150,3700,1449],{"class":1163},[1150,3702,3703,3705,3707,3709,3711,3713],{"class":1152,"line":1199},[1150,3704,2654],{"class":1156},[1150,3706,1204],{"class":1163},[1150,3708,1207],{"class":1156},[1150,3710,2661],{"class":1163},[1150,3712,1363],{"class":1156},[1150,3714,2666],{"class":1163},[1150,3716,3717,3719,3721,3723,3725],{"class":1152,"line":1213},[1150,3718,1801],{"class":1156},[1150,3720,2704],{"class":1163},[1150,3722,1807],{"class":1156},[1150,3724,2191],{"class":1356},[1150,3726,2142],{"class":1163},[1150,3728,3729,3731,3733,3735],{"class":1152,"line":1218},[1150,3730,3069],{"class":1156},[1150,3732,2302],{"class":1156},[1150,3734,3020],{"class":1278},[1150,3736,1558],{"class":1163},[1150,3738,3739,3741,3744],{"class":1152,"line":1223},[1150,3740,1685],{"class":1156},[1150,3742,3743],{"class":1278}," unlinkFirst",[1150,3745,3746],{"class":1163},"(f);\n",[1150,3748,3749],{"class":1152,"line":1229},[1150,3750,1400],{"class":1163},[913,3752,3753],{},[909,3754,3755],{},"removeLast()：删除列表中的最后一个元素",[1142,3757,3759],{"className":1144,"code":3758,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes and returns the last element from this list.\n *\n * @return the last element from this list\n * @throws NoSuchElementException if this list is empty\n *\u002F\npublic E removeLast() {\n    final Node\u003CE> l = last;\n    if (l == null)\n        throw new NoSuchElementException();\n    return unlinkLast(l);\n}\n",[950,3760,3761,3765,3770,3774,3783,3793,3797,3808,3822,3834,3844,3854],{"__ignoreMap":11},[1150,3762,3763],{"class":1152,"line":1153},[1150,3764,1176],{"class":1175},[1150,3766,3767],{"class":1152,"line":984},[1150,3768,3769],{"class":1175}," * Removes and returns the last element from this list.\n",[1150,3771,3772],{"class":1152,"line":1001},[1150,3773,1497],{"class":1175},[1150,3775,3776,3778,3780],{"class":1152,"line":1018},[1150,3777,1502],{"class":1175},[1150,3779,1652],{"class":1156},[1150,3781,3782],{"class":1175}," the last element from this list\n",[1150,3784,3785,3787,3789,3791],{"class":1152,"line":1029},[1150,3786,1502],{"class":1175},[1150,3788,1518],{"class":1156},[1150,3790,3020],{"class":1278},[1150,3792,3023],{"class":1175},[1150,3794,3795],{"class":1152,"line":1043},[1150,3796,1196],{"class":1175},[1150,3798,3799,3801,3803,3806],{"class":1152,"line":1090},[1150,3800,1443],{"class":1156},[1150,3802,2949],{"class":1163},[1150,3804,3805],{"class":1278},"removeLast",[1150,3807,1449],{"class":1163},[1150,3809,3810,3812,3814,3816,3818,3820],{"class":1152,"line":1199},[1150,3811,2654],{"class":1156},[1150,3813,1204],{"class":1163},[1150,3815,1207],{"class":1156},[1150,3817,2790],{"class":1163},[1150,3819,1363],{"class":1156},[1150,3821,2204],{"class":1163},[1150,3823,3824,3826,3828,3830,3832],{"class":1152,"line":1213},[1150,3825,1801],{"class":1156},[1150,3827,2831],{"class":1163},[1150,3829,1807],{"class":1156},[1150,3831,2191],{"class":1356},[1150,3833,2142],{"class":1163},[1150,3835,3836,3838,3840,3842],{"class":1152,"line":1218},[1150,3837,3069],{"class":1156},[1150,3839,2302],{"class":1156},[1150,3841,3020],{"class":1278},[1150,3843,1558],{"class":1163},[1150,3845,3846,3848,3851],{"class":1152,"line":1223},[1150,3847,1685],{"class":1156},[1150,3849,3850],{"class":1278}," unlinkLast",[1150,3852,3853],{"class":1163},"(l);\n",[1150,3855,3856],{"class":1152,"line":1229},[1150,3857,1400],{"class":1163},[913,3859,3860],{},[909,3861,3862],{},"removeFirstOccurrence(Object o)：从头向后遍历，删除此列表中指定元素的第一个引用，如果不包含该元素，则列表保持不变。",[1142,3864,3866],{"className":1144,"code":3865,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes the first occurrence of the specified element in this\n * list (when traversing the list from head to tail).  If the list\n * does not contain the element, it is unchanged.\n *\n * @param o element to be removed from this list, if present\n * @return {@code true} if the list contained the specified element\n * @since 1.6\n *\u002F\npublic boolean removeFirstOccurrence(Object o) {\n    return remove(o);\n}\n",[950,3867,3868,3872,3877,3882,3887,3891,3901,3910,3919,3923,3934,3943],{"__ignoreMap":11},[1150,3869,3870],{"class":1152,"line":1153},[1150,3871,1176],{"class":1175},[1150,3873,3874],{"class":1152,"line":984},[1150,3875,3876],{"class":1175}," * Removes the first occurrence of the specified element in this\n",[1150,3878,3879],{"class":1152,"line":1001},[1150,3880,3881],{"class":1175}," * list (when traversing the list from head to tail).  If the list\n",[1150,3883,3884],{"class":1152,"line":1018},[1150,3885,3886],{"class":1175}," * does not contain the element, it is unchanged.\n",[1150,3888,3889],{"class":1152,"line":1029},[1150,3890,1497],{"class":1175},[1150,3892,3893,3895,3897,3899],{"class":1152,"line":1043},[1150,3894,1502],{"class":1175},[1150,3896,1505],{"class":1156},[1150,3898,3447],{"class":1331},[1150,3900,3450],{"class":1175},[1150,3902,3903,3905,3907],{"class":1152,"line":1090},[1150,3904,1502],{"class":1175},[1150,3906,1652],{"class":1156},[1150,3908,3909],{"class":1175}," {@code true} if the list contained the specified element\n",[1150,3911,3912,3914,3916],{"class":1152,"line":1199},[1150,3913,1502],{"class":1175},[1150,3915,3245],{"class":1156},[1150,3917,3918],{"class":1175}," 1.6\n",[1150,3920,3921],{"class":1152,"line":1213},[1150,3922,1196],{"class":1175},[1150,3924,3925,3927,3929,3932],{"class":1152,"line":1218},[1150,3926,1443],{"class":1156},[1150,3928,1666],{"class":1156},[1150,3930,3931],{"class":1278}," removeFirstOccurrence",[1150,3933,3475],{"class":1163},[1150,3935,3936,3938,3940],{"class":1152,"line":1223},[1150,3937,1685],{"class":1156},[1150,3939,3472],{"class":1278},[1150,3941,3942],{"class":1163},"(o);\n",[1150,3944,3945],{"class":1152,"line":1229},[1150,3946,1400],{"class":1163},[913,3948,3949],{},[909,3950,3951],{},"removeLastOccurrence(Object o)：从头向后遍历，删除此列表中指定元素的最后一个引用，如果不包含该元素，则列表保持不变。",[1142,3953,3955],{"className":1144,"code":3954,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes the last occurrence of the specified element in this\n * list (when traversing the list from head to tail).  If the list\n * does not contain the element, it is unchanged.\n *\n * @param o element to be removed from this list, if present\n * @return {@code true} if the list contained the specified element\n * @since 1.6\n *\u002F\npublic boolean removeLastOccurrence(Object o) {\n    if (o == null) {\n        for (Node\u003CE> x = last; x != null; x = x.prev) {\n            if (x.item == null) {\n                unlink(x);\n                return true;\n            }\n        }\n    } else {\n        for (Node\u003CE> x = last; x != null; x = x.prev) {\n            if (o.equals(x.item)) {\n                unlink(x);\n                return true;\n            }\n        }\n    }\n    return false;\n}\n",[950,3956,3957,3961,3966,3970,3974,3978,3988,3996,4004,4008,4019,4031,4057,4069,4075,4083,4087,4091,4099,4123,4133,4139,4147,4151,4155,4159,4167],{"__ignoreMap":11},[1150,3958,3959],{"class":1152,"line":1153},[1150,3960,1176],{"class":1175},[1150,3962,3963],{"class":1152,"line":984},[1150,3964,3965],{"class":1175}," * Removes the last occurrence of the specified element in this\n",[1150,3967,3968],{"class":1152,"line":1001},[1150,3969,3881],{"class":1175},[1150,3971,3972],{"class":1152,"line":1018},[1150,3973,3886],{"class":1175},[1150,3975,3976],{"class":1152,"line":1029},[1150,3977,1497],{"class":1175},[1150,3979,3980,3982,3984,3986],{"class":1152,"line":1043},[1150,3981,1502],{"class":1175},[1150,3983,1505],{"class":1156},[1150,3985,3447],{"class":1331},[1150,3987,3450],{"class":1175},[1150,3989,3990,3992,3994],{"class":1152,"line":1090},[1150,3991,1502],{"class":1175},[1150,3993,1652],{"class":1156},[1150,3995,3909],{"class":1175},[1150,3997,3998,4000,4002],{"class":1152,"line":1199},[1150,3999,1502],{"class":1175},[1150,4001,3245],{"class":1156},[1150,4003,3918],{"class":1175},[1150,4005,4006],{"class":1152,"line":1213},[1150,4007,1196],{"class":1175},[1150,4009,4010,4012,4014,4017],{"class":1152,"line":1218},[1150,4011,1443],{"class":1156},[1150,4013,1666],{"class":1156},[1150,4015,4016],{"class":1278}," removeLastOccurrence",[1150,4018,3475],{"class":1163},[1150,4020,4021,4023,4025,4027,4029],{"class":1152,"line":1223},[1150,4022,1801],{"class":1156},[1150,4024,3482],{"class":1163},[1150,4026,1807],{"class":1156},[1150,4028,2191],{"class":1356},[1150,4030,1351],{"class":1163},[1150,4032,4033,4035,4037,4039,4041,4043,4046,4048,4050,4052,4054],{"class":1152,"line":1229},[1150,4034,3493],{"class":1156},[1150,4036,3496],{"class":1163},[1150,4038,1207],{"class":1156},[1150,4040,3501],{"class":1163},[1150,4042,1363],{"class":1156},[1150,4044,4045],{"class":1163}," last; x ",[1150,4047,3509],{"class":1156},[1150,4049,2191],{"class":1356},[1150,4051,3514],{"class":1163},[1150,4053,1363],{"class":1156},[1150,4055,4056],{"class":1163}," x.prev) {\n",[1150,4058,4059,4061,4063,4065,4067],{"class":1152,"line":1234},[1150,4060,3524],{"class":1156},[1150,4062,3527],{"class":1163},[1150,4064,1807],{"class":1156},[1150,4066,2191],{"class":1356},[1150,4068,1351],{"class":1163},[1150,4070,4071,4073],{"class":1152,"line":1240},[1150,4072,3538],{"class":1278},[1150,4074,3541],{"class":1163},[1150,4076,4077,4079,4081],{"class":1152,"line":1245},[1150,4078,3546],{"class":1156},[1150,4080,1688],{"class":1356},[1150,4082,1465],{"class":1163},[1150,4084,4085],{"class":1152,"line":1531},[1150,4086,3555],{"class":1163},[1150,4088,4089],{"class":1152,"line":1553},[1150,4090,3560],{"class":1163},[1150,4092,4093,4095,4097],{"class":1152,"line":1561},[1150,4094,2210],{"class":1163},[1150,4096,2213],{"class":1156},[1150,4098,2216],{"class":1163},[1150,4100,4101,4103,4105,4107,4109,4111,4113,4115,4117,4119,4121],{"class":1152,"line":1575},[1150,4102,3493],{"class":1156},[1150,4104,3496],{"class":1163},[1150,4106,1207],{"class":1156},[1150,4108,3501],{"class":1163},[1150,4110,1363],{"class":1156},[1150,4112,4045],{"class":1163},[1150,4114,3509],{"class":1156},[1150,4116,2191],{"class":1356},[1150,4118,3514],{"class":1163},[1150,4120,1363],{"class":1156},[1150,4122,4056],{"class":1163},[1150,4124,4125,4127,4129,4131],{"class":1152,"line":2116},[1150,4126,3524],{"class":1156},[1150,4128,3599],{"class":1163},[1150,4130,3602],{"class":1278},[1150,4132,3605],{"class":1163},[1150,4134,4135,4137],{"class":1152,"line":2130},[1150,4136,3538],{"class":1278},[1150,4138,3541],{"class":1163},[1150,4140,4141,4143,4145],{"class":1152,"line":2145},[1150,4142,3546],{"class":1156},[1150,4144,1688],{"class":1356},[1150,4146,1465],{"class":1163},[1150,4148,4149],{"class":1152,"line":2156},[1150,4150,3555],{"class":1163},[1150,4152,4153],{"class":1152,"line":2161},[1150,4154,3560],{"class":1163},[1150,4156,4157],{"class":1152,"line":2171},[1150,4158,1395],{"class":1163},[1150,4160,4161,4163,4165],{"class":1152,"line":2183},[1150,4162,1685],{"class":1156},[1150,4164,2151],{"class":1356},[1150,4166,1465],{"class":1163},[1150,4168,4169],{"class":1152,"line":2196},[1150,4170,1400],{"class":1163},[1112,4172,4173],{"id":4173},"set方法",[892,4175,4176],{},"LindedList 中修改指定索引位置的元素为 element。",[913,4178,4179],{},[909,4180,4181],{},"set(int index,E element)",[1142,4183,4185],{"className":1144,"code":4184,"language":1146,"meta":11,"style":11},"\u002F**\n * Replaces the element at the specified position in this list with the\n * specified element.\n *\n * @param index index of the element to replace\n * @param element element to be stored at the specified position\n * @return the element previously at the specified position\n * @throws IndexOutOfBoundsException {@inheritDoc}\n *\u002F\npublic E set(int index, E element) {\n    checkElementIndex(index);\n    Node\u003CE> x = node(index);\n    E oldVal = x.item;\n    x.item = element;\n    return oldVal;\n}\n",[950,4186,4187,4191,4196,4201,4205,4216,4227,4235,4245,4249,4264,4270,4284,4294,4303,4310],{"__ignoreMap":11},[1150,4188,4189],{"class":1152,"line":1153},[1150,4190,1176],{"class":1175},[1150,4192,4193],{"class":1152,"line":984},[1150,4194,4195],{"class":1175}," * Replaces the element at the specified position in this list with the\n",[1150,4197,4198],{"class":1152,"line":1001},[1150,4199,4200],{"class":1175}," * specified element.\n",[1150,4202,4203],{"class":1152,"line":1018},[1150,4204,1497],{"class":1175},[1150,4206,4207,4209,4211,4213],{"class":1152,"line":1029},[1150,4208,1502],{"class":1175},[1150,4210,1505],{"class":1156},[1150,4212,1735],{"class":1331},[1150,4214,4215],{"class":1175}," index of the element to replace\n",[1150,4217,4218,4220,4222,4224],{"class":1152,"line":1043},[1150,4219,1502],{"class":1175},[1150,4221,1505],{"class":1156},[1150,4223,1747],{"class":1331},[1150,4225,4226],{"class":1175}," element to be stored at the specified position\n",[1150,4228,4229,4231,4233],{"class":1152,"line":1090},[1150,4230,1502],{"class":1175},[1150,4232,1652],{"class":1156},[1150,4234,3329],{"class":1175},[1150,4236,4237,4239,4241,4243],{"class":1152,"line":1199},[1150,4238,1502],{"class":1175},[1150,4240,1518],{"class":1156},[1150,4242,1759],{"class":1278},[1150,4244,1762],{"class":1175},[1150,4246,4247],{"class":1152,"line":1213},[1150,4248,1196],{"class":1175},[1150,4250,4251,4253,4255,4258,4260,4262],{"class":1152,"line":1218},[1150,4252,1443],{"class":1156},[1150,4254,2949],{"class":1163},[1150,4256,4257],{"class":1278},"set",[1150,4259,1778],{"class":1163},[1150,4261,1781],{"class":1156},[1150,4263,1784],{"class":1163},[1150,4265,4266,4268],{"class":1152,"line":1223},[1150,4267,2964],{"class":1278},[1150,4269,1792],{"class":1163},[1150,4271,4272,4274,4276,4278,4280,4282],{"class":1152,"line":1229},[1150,4273,1297],{"class":1163},[1150,4275,1207],{"class":1156},[1150,4277,3501],{"class":1163},[1150,4279,1363],{"class":1156},[1150,4281,2226],{"class":1278},[1150,4283,1792],{"class":1163},[1150,4285,4286,4289,4291],{"class":1152,"line":1234},[1150,4287,4288],{"class":1163},"    E oldVal ",[1150,4290,1363],{"class":1156},[1150,4292,4293],{"class":1163}," x.item;\n",[1150,4295,4296,4299,4301],{"class":1152,"line":1240},[1150,4297,4298],{"class":1163},"    x.item ",[1150,4300,1363],{"class":1156},[1150,4302,1366],{"class":1163},[1150,4304,4305,4307],{"class":1152,"line":1245},[1150,4306,1685],{"class":1156},[1150,4308,4309],{"class":1163}," oldVal;\n",[1150,4311,4312],{"class":1152,"line":1531},[1150,4313,1400],{"class":1163},[1112,4315,4316],{"id":4316},"clear方法",[892,4318,4319],{},"LinkedList 中提供的 clear 方法清空该链表\u002F集合中的所有元素。",[913,4321,4322],{},[909,4323,4324],{},"clear()",[1142,4326,4328],{"className":1144,"code":4327,"language":1146,"meta":11,"style":11},"\u002F**\n * Removes all of the elements from this list.\n * The list will be empty after this call returns.\n *\u002F\npublic void clear() {\n    \u002F\u002F Clearing all of the links between nodes is \"unnecessary\", but:\n    \u002F\u002F - helps a generational GC if the discarded nodes inhabit\n    \u002F\u002F   more than one generation\n    \u002F\u002F - is sure to free memory even if there is a reachable Iterator\n    for (Node\u003CE> x = first; x != null; ) {\n        Node\u003CE> next = x.next;\n        x.item = null;\n        x.next = null;\n        x.prev = null;\n        x = next;\n    }\n    first = last = null;\n    size = 0;\n    modCount++;\n}\n",[950,4329,4330,4334,4339,4344,4348,4359,4364,4369,4374,4379,4400,4414,4425,4436,4447,4456,4460,4475,4485,4493],{"__ignoreMap":11},[1150,4331,4332],{"class":1152,"line":1153},[1150,4333,1176],{"class":1175},[1150,4335,4336],{"class":1152,"line":984},[1150,4337,4338],{"class":1175}," * Removes all of the elements from this list.\n",[1150,4340,4341],{"class":1152,"line":1001},[1150,4342,4343],{"class":1175}," * The list will be empty after this call returns.\n",[1150,4345,4346],{"class":1152,"line":1018},[1150,4347,1196],{"class":1175},[1150,4349,4350,4352,4354,4357],{"class":1152,"line":1029},[1150,4351,1443],{"class":1156},[1150,4353,1773],{"class":1156},[1150,4355,4356],{"class":1278}," clear",[1150,4358,1449],{"class":1163},[1150,4360,4361],{"class":1152,"line":1043},[1150,4362,4363],{"class":1175},"    \u002F\u002F Clearing all of the links between nodes is \"unnecessary\", but:\n",[1150,4365,4366],{"class":1152,"line":1090},[1150,4367,4368],{"class":1175},"    \u002F\u002F - helps a generational GC if the discarded nodes inhabit\n",[1150,4370,4371],{"class":1152,"line":1199},[1150,4372,4373],{"class":1175},"    \u002F\u002F   more than one generation\n",[1150,4375,4376],{"class":1152,"line":1213},[1150,4377,4378],{"class":1175},"    \u002F\u002F - is sure to free memory even if there is a reachable Iterator\n",[1150,4380,4381,4383,4385,4387,4389,4391,4393,4395,4397],{"class":1152,"line":1218},[1150,4382,2254],{"class":1156},[1150,4384,3496],{"class":1163},[1150,4386,1207],{"class":1156},[1150,4388,3501],{"class":1163},[1150,4390,1363],{"class":1156},[1150,4392,3506],{"class":1163},[1150,4394,3509],{"class":1156},[1150,4396,2191],{"class":1356},[1150,4398,4399],{"class":1163},"; ) {\n",[1150,4401,4402,4404,4406,4409,4411],{"class":1152,"line":1223},[1150,4403,2292],{"class":1163},[1150,4405,1207],{"class":1156},[1150,4407,4408],{"class":1163},"> next ",[1150,4410,1363],{"class":1156},[1150,4412,4413],{"class":1163}," x.next;\n",[1150,4415,4416,4419,4421,4423],{"class":1152,"line":1229},[1150,4417,4418],{"class":1163},"        x.item ",[1150,4420,1363],{"class":1156},[1150,4422,2191],{"class":1356},[1150,4424,1465],{"class":1163},[1150,4426,4427,4430,4432,4434],{"class":1152,"line":1234},[1150,4428,4429],{"class":1163},"        x.next ",[1150,4431,1363],{"class":1156},[1150,4433,2191],{"class":1356},[1150,4435,1465],{"class":1163},[1150,4437,4438,4441,4443,4445],{"class":1152,"line":1240},[1150,4439,4440],{"class":1163},"        x.prev ",[1150,4442,1363],{"class":1156},[1150,4444,2191],{"class":1356},[1150,4446,1465],{"class":1163},[1150,4448,4449,4452,4454],{"class":1152,"line":1245},[1150,4450,4451],{"class":1163},"        x ",[1150,4453,1363],{"class":1156},[1150,4455,1378],{"class":1163},[1150,4457,4458],{"class":1152,"line":1531},[1150,4459,1395],{"class":1163},[1150,4461,4462,4464,4466,4469,4471,4473],{"class":1152,"line":1553},[1150,4463,2693],{"class":1163},[1150,4465,1363],{"class":1156},[1150,4467,4468],{"class":1163}," last ",[1150,4470,1363],{"class":1156},[1150,4472,2191],{"class":1356},[1150,4474,1465],{"class":1163},[1150,4476,4477,4479,4481,4483],{"class":1152,"line":1561},[1150,4478,2443],{"class":1163},[1150,4480,1363],{"class":1156},[1150,4482,1462],{"class":1356},[1150,4484,1465],{"class":1163},[1150,4486,4487,4489,4491],{"class":1152,"line":1575},[1150,4488,2455],{"class":1163},[1150,4490,2458],{"class":1156},[1150,4492,1465],{"class":1163},[1150,4494,4495],{"class":1152,"line":2116},[1150,4496,1400],{"class":1163},[1112,4498,4499],{"id":4499},"index方法",[892,4501,4502],{},"LinkedList 中提供的 indexOf(Object o) 方法可以查找链表中第一次出现元素 o 的索引下标。",[913,4504,4505],{},[909,4506,4507],{},"indexOf(Object o)",[1142,4509,4511],{"className":1144,"code":4510,"language":1146,"meta":11,"style":11},"\u002F**\n * Returns the index of the first occurrence of the specified element\n * in this list, or -1 if this list does not contain the element.\n * More formally, returns the lowest index {@code i} such that\n * \u003Ctt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))\u003C\u002Ftt>,\n * or -1 if there is no such index.\n *\n * @param o element to search for\n * @return the index of the first occurrence of the specified element in\n *         this list, or -1 if this list does not contain the element\n *\u002F\npublic int indexOf(Object o) {\n    int index = 0;\n    if (o == null) {\n        for (Node\u003CE> x = first; x != null; x = x.next) {\n            if (x.item == null)\n                return index;\n            index++;\n        }\n    } else {\n        for (Node\u003CE> x = first; x != null; x = x.next) {\n            if (o.equals(x.item))\n                return index;\n            index++;\n        }\n    }\n    return -1;\n}\n",[950,4512,4513,4517,4522,4527,4532,4537,4542,4546,4557,4566,4571,4575,4586,4599,4611,4635,4647,4654,4663,4667,4675,4699,4710,4716,4724,4728,4732,4744],{"__ignoreMap":11},[1150,4514,4515],{"class":1152,"line":1153},[1150,4516,1176],{"class":1175},[1150,4518,4519],{"class":1152,"line":984},[1150,4520,4521],{"class":1175}," * Returns the index of the first occurrence of the specified element\n",[1150,4523,4524],{"class":1152,"line":1001},[1150,4525,4526],{"class":1175}," * in this list, or -1 if this list does not contain the element.\n",[1150,4528,4529],{"class":1152,"line":1018},[1150,4530,4531],{"class":1175}," * More formally, returns the lowest index {@code i} such that\n",[1150,4533,4534],{"class":1152,"line":1029},[1150,4535,4536],{"class":1175}," * \u003Ctt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))\u003C\u002Ftt>,\n",[1150,4538,4539],{"class":1152,"line":1043},[1150,4540,4541],{"class":1175}," * or -1 if there is no such index.\n",[1150,4543,4544],{"class":1152,"line":1090},[1150,4545,1497],{"class":1175},[1150,4547,4548,4550,4552,4554],{"class":1152,"line":1199},[1150,4549,1502],{"class":1175},[1150,4551,1505],{"class":1156},[1150,4553,3447],{"class":1331},[1150,4555,4556],{"class":1175}," element to search for\n",[1150,4558,4559,4561,4563],{"class":1152,"line":1213},[1150,4560,1502],{"class":1175},[1150,4562,1652],{"class":1156},[1150,4564,4565],{"class":1175}," the index of the first occurrence of the specified element in\n",[1150,4567,4568],{"class":1152,"line":1218},[1150,4569,4570],{"class":1175}," *         this list, or -1 if this list does not contain the element\n",[1150,4572,4573],{"class":1152,"line":1223},[1150,4574,1196],{"class":1175},[1150,4576,4577,4579,4581,4584],{"class":1152,"line":1229},[1150,4578,1443],{"class":1156},[1150,4580,1160],{"class":1156},[1150,4582,4583],{"class":1278}," indexOf",[1150,4585,3475],{"class":1163},[1150,4587,4588,4590,4593,4595,4597],{"class":1152,"line":1234},[1150,4589,2119],{"class":1156},[1150,4591,4592],{"class":1163}," index ",[1150,4594,1363],{"class":1156},[1150,4596,1462],{"class":1356},[1150,4598,1465],{"class":1163},[1150,4600,4601,4603,4605,4607,4609],{"class":1152,"line":1240},[1150,4602,1801],{"class":1156},[1150,4604,3482],{"class":1163},[1150,4606,1807],{"class":1156},[1150,4608,2191],{"class":1356},[1150,4610,1351],{"class":1163},[1150,4612,4613,4615,4617,4619,4621,4623,4625,4627,4629,4631,4633],{"class":1152,"line":1245},[1150,4614,3493],{"class":1156},[1150,4616,3496],{"class":1163},[1150,4618,1207],{"class":1156},[1150,4620,3501],{"class":1163},[1150,4622,1363],{"class":1156},[1150,4624,3506],{"class":1163},[1150,4626,3509],{"class":1156},[1150,4628,2191],{"class":1356},[1150,4630,3514],{"class":1163},[1150,4632,1363],{"class":1156},[1150,4634,3519],{"class":1163},[1150,4636,4637,4639,4641,4643,4645],{"class":1152,"line":1531},[1150,4638,3524],{"class":1156},[1150,4640,3527],{"class":1163},[1150,4642,1807],{"class":1156},[1150,4644,2191],{"class":1356},[1150,4646,2142],{"class":1163},[1150,4648,4649,4651],{"class":1152,"line":1553},[1150,4650,3546],{"class":1156},[1150,4652,4653],{"class":1163}," index;\n",[1150,4655,4656,4659,4661],{"class":1152,"line":1561},[1150,4657,4658],{"class":1163},"            index",[1150,4660,2458],{"class":1156},[1150,4662,1465],{"class":1163},[1150,4664,4665],{"class":1152,"line":1575},[1150,4666,3560],{"class":1163},[1150,4668,4669,4671,4673],{"class":1152,"line":2116},[1150,4670,2210],{"class":1163},[1150,4672,2213],{"class":1156},[1150,4674,2216],{"class":1163},[1150,4676,4677,4679,4681,4683,4685,4687,4689,4691,4693,4695,4697],{"class":1152,"line":2130},[1150,4678,3493],{"class":1156},[1150,4680,3496],{"class":1163},[1150,4682,1207],{"class":1156},[1150,4684,3501],{"class":1163},[1150,4686,1363],{"class":1156},[1150,4688,3506],{"class":1163},[1150,4690,3509],{"class":1156},[1150,4692,2191],{"class":1356},[1150,4694,3514],{"class":1163},[1150,4696,1363],{"class":1156},[1150,4698,3519],{"class":1163},[1150,4700,4701,4703,4705,4707],{"class":1152,"line":2145},[1150,4702,3524],{"class":1156},[1150,4704,3599],{"class":1163},[1150,4706,3602],{"class":1278},[1150,4708,4709],{"class":1163},"(x.item))\n",[1150,4711,4712,4714],{"class":1152,"line":2156},[1150,4713,3546],{"class":1156},[1150,4715,4653],{"class":1163},[1150,4717,4718,4720,4722],{"class":1152,"line":2161},[1150,4719,4658],{"class":1163},[1150,4721,2458],{"class":1156},[1150,4723,1465],{"class":1163},[1150,4725,4726],{"class":1152,"line":2171},[1150,4727,3560],{"class":1163},[1150,4729,4730],{"class":1152,"line":2183},[1150,4731,1395],{"class":1163},[1150,4733,4734,4736,4739,4742],{"class":1152,"line":2196},[1150,4735,1685],{"class":1156},[1150,4737,4738],{"class":1156}," -",[1150,4740,4741],{"class":1356},"1",[1150,4743,1465],{"class":1163},[1150,4745,4746],{"class":1152,"line":2207},[1150,4747,1400],{"class":1163},[1112,4749,4751],{"id":4750},"queue接口方法","Queue接口方法",[892,4753,4754],{},"Queue 接口是单向队列的接口，提供了对队列的主要操作方法：",[913,4756,4757,4760,4763,4766],{},[909,4758,4759],{},"peek()：查看队列顶端元素，也就是出口处元素",[909,4761,4762],{},"poll()：返回队列顶端元素，并且将该元素出队列",[909,4764,4765],{},"remove()：移除队首元素",[909,4767,4768],{},"offer(E e)：将元素 e 入队",[1142,4770,4772],{"className":1144,"code":4771,"language":1146,"meta":11,"style":11},"\u002F**\n * Retrieves, but does not remove, the head (first element) of this list.\n *\n * @return the head of this list, or {@code null} if this list is empty\n * @since 1.5\n *\u002F\npublic E peek() {\n    final Node\u003CE> f = first;\n    return (f == null) ? null : f.item;\n}\n\n\u002F**\n * Retrieves, but does not remove, the head (first element) of this list.\n *\n * @return the head of this list\n * @throws NoSuchElementException if this list is empty\n * @since 1.5\n *\u002F\npublic E element() {\n    return getFirst();\n}\n\n\u002F**\n * Retrieves and removes the head (first element) of this list.\n *\n * @return the head of this list, or {@code null} if this list is empty\n * @since 1.5\n *\u002F\npublic E poll() {\n    final Node\u003CE> f = first;\n    return (f == null) ? null : unlinkFirst(f);\n}\n\n\u002F**\n * Retrieves and removes the head (first element) of this list.\n *\n * @return the head of this list\n * @throws NoSuchElementException if this list is empty\n * @since 1.5\n *\u002F\npublic E remove() {\n    return removeFirst();\n}\n\n\u002F**\n * Adds the specified element as the tail (last element) of this list.\n *\n * @param e the element to add\n * @return {@code true} (as specified by {@link Queue#offer})\n * @since 1.5\n *\u002F\npublic boolean offer(E e) {\n    return add(e);\n}\n",[950,4773,4774,4778,4783,4787,4796,4804,4808,4819,4833,4856,4860,4864,4868,4872,4876,4884,4894,4902,4906,4916,4925,4929,4933,4937,4941,4945,4953,4961,4965,4976,4990,5012,5016,5020,5024,5028,5032,5040,5050,5058,5062,5072,5080,5084,5088,5092,5097,5101,5111,5120,5128,5132,5143,5151],{"__ignoreMap":11},[1150,4775,4776],{"class":1152,"line":1153},[1150,4777,1176],{"class":1175},[1150,4779,4780],{"class":1152,"line":984},[1150,4781,4782],{"class":1175}," * Retrieves, but does not remove, the head (first element) of this list.\n",[1150,4784,4785],{"class":1152,"line":1001},[1150,4786,1497],{"class":1175},[1150,4788,4789,4791,4793],{"class":1152,"line":1018},[1150,4790,1502],{"class":1175},[1150,4792,1652],{"class":1156},[1150,4794,4795],{"class":1175}," the head of this list, or {@code null} if this list is empty\n",[1150,4797,4798,4800,4802],{"class":1152,"line":1029},[1150,4799,1502],{"class":1175},[1150,4801,3245],{"class":1156},[1150,4803,3248],{"class":1175},[1150,4805,4806],{"class":1152,"line":1043},[1150,4807,1196],{"class":1175},[1150,4809,4810,4812,4814,4817],{"class":1152,"line":1090},[1150,4811,1443],{"class":1156},[1150,4813,2949],{"class":1163},[1150,4815,4816],{"class":1278},"peek",[1150,4818,1449],{"class":1163},[1150,4820,4821,4823,4825,4827,4829,4831],{"class":1152,"line":1199},[1150,4822,2654],{"class":1156},[1150,4824,1204],{"class":1163},[1150,4826,1207],{"class":1156},[1150,4828,2661],{"class":1163},[1150,4830,1363],{"class":1156},[1150,4832,2666],{"class":1163},[1150,4834,4835,4837,4839,4841,4843,4846,4849,4851,4854],{"class":1152,"line":1213},[1150,4836,1685],{"class":1156},[1150,4838,2704],{"class":1163},[1150,4840,1807],{"class":1156},[1150,4842,2191],{"class":1356},[1150,4844,4845],{"class":1163},") ",[1150,4847,4848],{"class":1156},"?",[1150,4850,2191],{"class":1356},[1150,4852,4853],{"class":1156}," :",[1150,4855,3082],{"class":1163},[1150,4857,4858],{"class":1152,"line":1218},[1150,4859,1400],{"class":1163},[1150,4861,4862],{"class":1152,"line":1223},[1150,4863,1170],{"emptyLinePlaceholder":1169},[1150,4865,4866],{"class":1152,"line":1229},[1150,4867,1176],{"class":1175},[1150,4869,4870],{"class":1152,"line":1234},[1150,4871,4782],{"class":1175},[1150,4873,4874],{"class":1152,"line":1240},[1150,4875,1497],{"class":1175},[1150,4877,4878,4880,4882],{"class":1152,"line":1245},[1150,4879,1502],{"class":1175},[1150,4881,1652],{"class":1156},[1150,4883,3228],{"class":1175},[1150,4885,4886,4888,4890,4892],{"class":1152,"line":1531},[1150,4887,1502],{"class":1175},[1150,4889,1518],{"class":1156},[1150,4891,3020],{"class":1278},[1150,4893,3023],{"class":1175},[1150,4895,4896,4898,4900],{"class":1152,"line":1553},[1150,4897,1502],{"class":1175},[1150,4899,3245],{"class":1156},[1150,4901,3248],{"class":1175},[1150,4903,4904],{"class":1152,"line":1561},[1150,4905,1196],{"class":1175},[1150,4907,4908,4910,4912,4914],{"class":1152,"line":1575},[1150,4909,1443],{"class":1156},[1150,4911,2949],{"class":1163},[1150,4913,1338],{"class":1278},[1150,4915,1449],{"class":1163},[1150,4917,4918,4920,4923],{"class":1152,"line":2116},[1150,4919,1685],{"class":1156},[1150,4921,4922],{"class":1278}," getFirst",[1150,4924,1558],{"class":1163},[1150,4926,4927],{"class":1152,"line":2130},[1150,4928,1400],{"class":1163},[1150,4930,4931],{"class":1152,"line":2145},[1150,4932,1170],{"emptyLinePlaceholder":1169},[1150,4934,4935],{"class":1152,"line":2156},[1150,4936,1176],{"class":1175},[1150,4938,4939],{"class":1152,"line":2161},[1150,4940,3215],{"class":1175},[1150,4942,4943],{"class":1152,"line":2171},[1150,4944,1497],{"class":1175},[1150,4946,4947,4949,4951],{"class":1152,"line":2183},[1150,4948,1502],{"class":1175},[1150,4950,1652],{"class":1156},[1150,4952,4795],{"class":1175},[1150,4954,4955,4957,4959],{"class":1152,"line":2196},[1150,4956,1502],{"class":1175},[1150,4958,3245],{"class":1156},[1150,4960,3248],{"class":1175},[1150,4962,4963],{"class":1152,"line":2207},[1150,4964,1196],{"class":1175},[1150,4966,4967,4969,4971,4974],{"class":1152,"line":2219},[1150,4968,1443],{"class":1156},[1150,4970,2949],{"class":1163},[1150,4972,4973],{"class":1278},"poll",[1150,4975,1449],{"class":1163},[1150,4977,4978,4980,4982,4984,4986,4988],{"class":1152,"line":2231},[1150,4979,2654],{"class":1156},[1150,4981,1204],{"class":1163},[1150,4983,1207],{"class":1156},[1150,4985,2661],{"class":1163},[1150,4987,1363],{"class":1156},[1150,4989,2666],{"class":1163},[1150,4991,4992,4994,4996,4998,5000,5002,5004,5006,5008,5010],{"class":1152,"line":2241},[1150,4993,1685],{"class":1156},[1150,4995,2704],{"class":1163},[1150,4997,1807],{"class":1156},[1150,4999,2191],{"class":1356},[1150,5001,4845],{"class":1163},[1150,5003,4848],{"class":1156},[1150,5005,2191],{"class":1356},[1150,5007,4853],{"class":1156},[1150,5009,3743],{"class":1278},[1150,5011,3746],{"class":1163},[1150,5013,5014],{"class":1152,"line":2246},[1150,5015,1400],{"class":1163},[1150,5017,5018],{"class":1152,"line":2251},[1150,5019,1170],{"emptyLinePlaceholder":1169},[1150,5021,5022],{"class":1152,"line":2266},[1150,5023,1176],{"class":1175},[1150,5025,5026],{"class":1152,"line":2289},[1150,5027,3215],{"class":1175},[1150,5029,5030],{"class":1152,"line":2314},[1150,5031,1497],{"class":1175},[1150,5033,5034,5036,5038],{"class":1152,"line":2329},[1150,5035,1502],{"class":1175},[1150,5037,1652],{"class":1156},[1150,5039,3228],{"class":1175},[1150,5041,5042,5044,5046,5048],{"class":1152,"line":2340},[1150,5043,1502],{"class":1175},[1150,5045,1518],{"class":1156},[1150,5047,3020],{"class":1278},[1150,5049,3023],{"class":1175},[1150,5051,5052,5054,5056],{"class":1152,"line":2346},[1150,5053,1502],{"class":1175},[1150,5055,3245],{"class":1156},[1150,5057,3248],{"class":1175},[1150,5059,5060],{"class":1152,"line":2356},[1150,5061,1196],{"class":1175},[1150,5063,5064,5066,5068,5070],{"class":1152,"line":2365},[1150,5065,1443],{"class":1156},[1150,5067,2949],{"class":1163},[1150,5069,3261],{"class":1278},[1150,5071,1449],{"class":1163},[1150,5073,5074,5076,5078],{"class":1152,"line":2370},[1150,5075,1685],{"class":1156},[1150,5077,3270],{"class":1278},[1150,5079,1558],{"class":1163},[1150,5081,5082],{"class":1152,"line":2375},[1150,5083,1400],{"class":1163},[1150,5085,5086],{"class":1152,"line":2389},[1150,5087,1170],{"emptyLinePlaceholder":1169},[1150,5089,5090],{"class":1152,"line":2400},[1150,5091,1176],{"class":1175},[1150,5093,5094],{"class":1152,"line":2409},[1150,5095,5096],{"class":1175}," * Adds the specified element as the tail (last element) of this list.\n",[1150,5098,5099],{"class":1152,"line":2420},[1150,5100,1497],{"class":1175},[1150,5102,5103,5105,5107,5109],{"class":1152,"line":2430},[1150,5104,1502],{"class":1175},[1150,5106,1505],{"class":1156},[1150,5108,1642],{"class":1331},[1150,5110,2508],{"class":1175},[1150,5112,5113,5115,5117],{"class":1152,"line":2435},[1150,5114,1502],{"class":1175},[1150,5116,1652],{"class":1156},[1150,5118,5119],{"class":1175}," {@code true} (as specified by {@link Queue#offer})\n",[1150,5121,5122,5124,5126],{"class":1152,"line":2440},[1150,5123,1502],{"class":1175},[1150,5125,3245],{"class":1156},[1150,5127,3248],{"class":1175},[1150,5129,5130],{"class":1152,"line":2452},[1150,5131,1196],{"class":1175},[1150,5133,5134,5136,5138,5141],{"class":1152,"line":2463},[1150,5135,1443],{"class":1156},[1150,5137,1666],{"class":1156},[1150,5139,5140],{"class":1278}," offer",[1150,5142,1672],{"class":1163},[1150,5144,5145,5147,5149],{"class":1152,"line":2472},[1150,5146,1685],{"class":1156},[1150,5148,1669],{"class":1278},[1150,5150,1680],{"class":1163},[1150,5152,5154],{"class":1152,"line":5153},54,[1150,5155,1400],{"class":1163},[1112,5157,5159],{"id":5158},"deque接口方法","Deque接口方法",[892,5161,5162],{},"Deque 双向队列接口继承自 Queue 队列接口，主要提供了双向队列相关的一些操作方法：",[913,5164,5165,5168,5171,5174,5177,5180,5183,5186,5189,5192],{},[909,5166,5167],{},"offerFirst(E e)：从队头插入元素",[909,5169,5170],{},"offerLast(E e)：从队位插入元素",[909,5172,5173],{},"peekFirst()：查看队头元素",[909,5175,5176],{},"peekLast()：查看队尾元素",[909,5178,5179],{},"pollFirst()：弹出对头元素",[909,5181,5182],{},"pollLast()：弹出队尾元素",[909,5184,5185],{},"push(E e)：从队头将元素 e 入队",[909,5187,5188],{},"pop()：出队一个元素",[909,5190,5191],{},"removeFirstOccurrence(Object o)：删除元素 o 第一次出现的引用",[909,5193,5194],{},"removeLastOccurrence(Object o)：删除元素 o 最后一次出现的引用",[1142,5196,5198],{"className":1144,"code":5197,"language":1146,"meta":11,"style":11},"\u002F**\n * Inserts the specified element at the front of this list.\n *\n * @param e the element to insert\n * @return {@code true} (as specified by {@link Deque#offerFirst})\n * @since 1.6\n *\u002F\npublic boolean offerFirst(E e) {\n    addFirst(e);\n    return true;\n}\n\n\u002F**\n * Inserts the specified element at the end of this list.\n *\n * @param e the element to insert\n * @return {@code true} (as specified by {@link Deque#offerLast})\n * @since 1.6\n *\u002F\npublic boolean offerLast(E e) {\n    addLast(e);\n    return true;\n}\n\n\u002F**\n * Retrieves, but does not remove, the first element of this list,\n * or returns {@code null} if this list is empty.\n *\n * @return the first element of this list, or {@code null}\n *         if this list is empty\n * @since 1.6\n *\u002F\npublic E peekFirst() {\n    final Node\u003CE> f = first;\n    return (f == null) ? null : f.item;\n    }\n\n\u002F**\n * Retrieves, but does not remove, the last element of this list,\n * or returns {@code null} if this list is empty.\n *\n * @return the last element of this list, or {@code null}\n *         if this list is empty\n * @since 1.6\n *\u002F\npublic E peekLast() {\n    final Node\u003CE> l = last;\n    return (l == null) ? null : l.item;\n}\n\n\u002F**\n * Retrieves and removes the first element of this list,\n * or returns {@code null} if this list is empty.\n *\n * @return the first element of this list, or {@code null} if\n *     this list is empty\n * @since 1.6\n *\u002F\npublic E pollFirst() {\n    final Node\u003CE> f = first;\n    return (f == null) ? null : unlinkFirst(f);\n}\n\n\u002F**\n * Retrieves and removes the last element of this list,\n * or returns {@code null} if this list is empty.\n *\n * @return the last element of this list, or {@code null} if\n *     this list is empty\n * @since 1.6\n *\u002F\npublic E pollLast() {\n    final Node\u003CE> l = last;\n    return (l == null) ? null : unlinkLast(l);\n}\n\n\u002F**\n * Pushes an element onto the stack represented by this list.  In other\n * words, inserts the element at the front of this list.\n *\n * \u003Cp>This method is equivalent to {@link #addFirst}.\n *\n * @param e the element to push\n * @since 1.6\n *\u002F\npublic void push(E e) {\n    addFirst(e);\n}\n\n\u002F**\n * Pops an element from the stack represented by this list.  In other\n * words, removes and returns the first element of this list.\n *\n * \u003Cp>This method is equivalent to {@link #removeFirst()}.\n *\n * @return the element at the front of this list (which is the top\n *         of the stack represented by this list)\n * @throws NoSuchElementException if this list is empty\n * @since 1.6\n *\u002F\npublic E pop() {\n    return removeFirst();\n}\n\n\u002F**\n * Removes the first occurrence of the specified element in this\n * list (when traversing the list from head to tail).  If the list\n * does not contain the element, it is unchanged.\n *\n * @param o element to be removed from this list, if present\n * @return {@code true} if the list contained the specified element\n * @since 1.6\n *\u002F\npublic boolean removeFirstOccurrence(Object o) {\n    return remove(o);\n}\n\n\u002F**\n * Removes the last occurrence of the specified element in this\n * list (when traversing the list from head to tail).  If the list\n * does not contain the element, it is unchanged.\n *\n * @param o element to be removed from this list, if present\n * @return {@code true} if the list contained the specified element\n * @since 1.6\n *\u002F\npublic boolean removeLastOccurrence(Object o) {\n    if (o == null) {\n        for (Node\u003CE> x = last; x != null; x = x.prev) {\n            if (x.item == null) {\n                unlink(x);\n                return true;\n            }\n        }\n    } else {\n        for (Node\u003CE> x = last; x != null; x = x.prev) {\n            if (o.equals(x.item)) {\n                unlink(x);\n                return true;\n            }\n        }\n    }\n    return false;\n}\n",[950,5199,5200,5204,5209,5213,5224,5233,5241,5245,5256,5263,5271,5275,5279,5283,5288,5292,5302,5311,5319,5323,5334,5341,5349,5353,5357,5361,5366,5371,5375,5384,5389,5397,5401,5412,5426,5446,5450,5454,5458,5463,5467,5471,5480,5484,5492,5496,5507,5521,5541,5545,5549,5553,5558,5562,5566,5576,5582,5591,5596,5608,5623,5646,5651,5656,5661,5667,5672,5677,5687,5692,5701,5706,5718,5733,5756,5761,5766,5771,5777,5783,5788,5794,5799,5811,5820,5825,5837,5844,5849,5854,5859,5865,5871,5876,5894,5899,5909,5915,5926,5935,5940,5952,5961,5966,5971,5976,5981,5986,5991,5996,6007,6016,6025,6030,6041,6050,6055,6060,6065,6070,6075,6080,6085,6096,6105,6114,6119,6130,6143,6168,6181,6188,6197,6202,6207,6216,6241,6252,6259,6268,6273,6278,6283,6292],{"__ignoreMap":11},[1150,5201,5202],{"class":1152,"line":1153},[1150,5203,1176],{"class":1175},[1150,5205,5206],{"class":1152,"line":984},[1150,5207,5208],{"class":1175}," * Inserts the specified element at the front of this list.\n",[1150,5210,5211],{"class":1152,"line":1001},[1150,5212,1497],{"class":1175},[1150,5214,5215,5217,5219,5221],{"class":1152,"line":1018},[1150,5216,1502],{"class":1175},[1150,5218,1505],{"class":1156},[1150,5220,1642],{"class":1331},[1150,5222,5223],{"class":1175}," the element to insert\n",[1150,5225,5226,5228,5230],{"class":1152,"line":1029},[1150,5227,1502],{"class":1175},[1150,5229,1652],{"class":1156},[1150,5231,5232],{"class":1175}," {@code true} (as specified by {@link Deque#offerFirst})\n",[1150,5234,5235,5237,5239],{"class":1152,"line":1043},[1150,5236,1502],{"class":1175},[1150,5238,3245],{"class":1156},[1150,5240,3918],{"class":1175},[1150,5242,5243],{"class":1152,"line":1090},[1150,5244,1196],{"class":1175},[1150,5246,5247,5249,5251,5254],{"class":1152,"line":1199},[1150,5248,1443],{"class":1156},[1150,5250,1666],{"class":1156},[1150,5252,5253],{"class":1278}," offerFirst",[1150,5255,1672],{"class":1163},[1150,5257,5258,5261],{"class":1152,"line":1213},[1150,5259,5260],{"class":1278},"    addFirst",[1150,5262,1680],{"class":1163},[1150,5264,5265,5267,5269],{"class":1152,"line":1218},[1150,5266,1685],{"class":1156},[1150,5268,1688],{"class":1356},[1150,5270,1465],{"class":1163},[1150,5272,5273],{"class":1152,"line":1223},[1150,5274,1400],{"class":1163},[1150,5276,5277],{"class":1152,"line":1229},[1150,5278,1170],{"emptyLinePlaceholder":1169},[1150,5280,5281],{"class":1152,"line":1234},[1150,5282,1176],{"class":1175},[1150,5284,5285],{"class":1152,"line":1240},[1150,5286,5287],{"class":1175}," * Inserts the specified element at the end of this list.\n",[1150,5289,5290],{"class":1152,"line":1245},[1150,5291,1497],{"class":1175},[1150,5293,5294,5296,5298,5300],{"class":1152,"line":1531},[1150,5295,1502],{"class":1175},[1150,5297,1505],{"class":1156},[1150,5299,1642],{"class":1331},[1150,5301,5223],{"class":1175},[1150,5303,5304,5306,5308],{"class":1152,"line":1553},[1150,5305,1502],{"class":1175},[1150,5307,1652],{"class":1156},[1150,5309,5310],{"class":1175}," {@code true} (as specified by {@link Deque#offerLast})\n",[1150,5312,5313,5315,5317],{"class":1152,"line":1561},[1150,5314,1502],{"class":1175},[1150,5316,3245],{"class":1156},[1150,5318,3918],{"class":1175},[1150,5320,5321],{"class":1152,"line":1575},[1150,5322,1196],{"class":1175},[1150,5324,5325,5327,5329,5332],{"class":1152,"line":2116},[1150,5326,1443],{"class":1156},[1150,5328,1666],{"class":1156},[1150,5330,5331],{"class":1278}," offerLast",[1150,5333,1672],{"class":1163},[1150,5335,5336,5339],{"class":1152,"line":2130},[1150,5337,5338],{"class":1278},"    addLast",[1150,5340,1680],{"class":1163},[1150,5342,5343,5345,5347],{"class":1152,"line":2145},[1150,5344,1685],{"class":1156},[1150,5346,1688],{"class":1356},[1150,5348,1465],{"class":1163},[1150,5350,5351],{"class":1152,"line":2156},[1150,5352,1400],{"class":1163},[1150,5354,5355],{"class":1152,"line":2161},[1150,5356,1170],{"emptyLinePlaceholder":1169},[1150,5358,5359],{"class":1152,"line":2171},[1150,5360,1176],{"class":1175},[1150,5362,5363],{"class":1152,"line":2183},[1150,5364,5365],{"class":1175}," * Retrieves, but does not remove, the first element of this list,\n",[1150,5367,5368],{"class":1152,"line":2196},[1150,5369,5370],{"class":1175}," * or returns {@code null} if this list is empty.\n",[1150,5372,5373],{"class":1152,"line":2207},[1150,5374,1497],{"class":1175},[1150,5376,5377,5379,5381],{"class":1152,"line":2219},[1150,5378,1502],{"class":1175},[1150,5380,1652],{"class":1156},[1150,5382,5383],{"class":1175}," the first element of this list, or {@code null}\n",[1150,5385,5386],{"class":1152,"line":2231},[1150,5387,5388],{"class":1175}," *         if this list is empty\n",[1150,5390,5391,5393,5395],{"class":1152,"line":2241},[1150,5392,1502],{"class":1175},[1150,5394,3245],{"class":1156},[1150,5396,3918],{"class":1175},[1150,5398,5399],{"class":1152,"line":2246},[1150,5400,1196],{"class":1175},[1150,5402,5403,5405,5407,5410],{"class":1152,"line":2251},[1150,5404,1443],{"class":1156},[1150,5406,2949],{"class":1163},[1150,5408,5409],{"class":1278},"peekFirst",[1150,5411,1449],{"class":1163},[1150,5413,5414,5416,5418,5420,5422,5424],{"class":1152,"line":2266},[1150,5415,2654],{"class":1156},[1150,5417,1204],{"class":1163},[1150,5419,1207],{"class":1156},[1150,5421,2661],{"class":1163},[1150,5423,1363],{"class":1156},[1150,5425,2666],{"class":1163},[1150,5427,5428,5430,5432,5434,5436,5438,5440,5442,5444],{"class":1152,"line":2289},[1150,5429,1685],{"class":1156},[1150,5431,2704],{"class":1163},[1150,5433,1807],{"class":1156},[1150,5435,2191],{"class":1356},[1150,5437,4845],{"class":1163},[1150,5439,4848],{"class":1156},[1150,5441,2191],{"class":1356},[1150,5443,4853],{"class":1156},[1150,5445,3082],{"class":1163},[1150,5447,5448],{"class":1152,"line":2314},[1150,5449,1395],{"class":1163},[1150,5451,5452],{"class":1152,"line":2329},[1150,5453,1170],{"emptyLinePlaceholder":1169},[1150,5455,5456],{"class":1152,"line":2340},[1150,5457,1176],{"class":1175},[1150,5459,5460],{"class":1152,"line":2346},[1150,5461,5462],{"class":1175}," * Retrieves, but does not remove, the last element of this list,\n",[1150,5464,5465],{"class":1152,"line":2356},[1150,5466,5370],{"class":1175},[1150,5468,5469],{"class":1152,"line":2365},[1150,5470,1497],{"class":1175},[1150,5472,5473,5475,5477],{"class":1152,"line":2370},[1150,5474,1502],{"class":1175},[1150,5476,1652],{"class":1156},[1150,5478,5479],{"class":1175}," the last element of this list, or {@code null}\n",[1150,5481,5482],{"class":1152,"line":2375},[1150,5483,5388],{"class":1175},[1150,5485,5486,5488,5490],{"class":1152,"line":2389},[1150,5487,1502],{"class":1175},[1150,5489,3245],{"class":1156},[1150,5491,3918],{"class":1175},[1150,5493,5494],{"class":1152,"line":2400},[1150,5495,1196],{"class":1175},[1150,5497,5498,5500,5502,5505],{"class":1152,"line":2409},[1150,5499,1443],{"class":1156},[1150,5501,2949],{"class":1163},[1150,5503,5504],{"class":1278},"peekLast",[1150,5506,1449],{"class":1163},[1150,5508,5509,5511,5513,5515,5517,5519],{"class":1152,"line":2420},[1150,5510,2654],{"class":1156},[1150,5512,1204],{"class":1163},[1150,5514,1207],{"class":1156},[1150,5516,2790],{"class":1163},[1150,5518,1363],{"class":1156},[1150,5520,2204],{"class":1163},[1150,5522,5523,5525,5527,5529,5531,5533,5535,5537,5539],{"class":1152,"line":2430},[1150,5524,1685],{"class":1156},[1150,5526,2831],{"class":1163},[1150,5528,1807],{"class":1156},[1150,5530,2191],{"class":1356},[1150,5532,4845],{"class":1163},[1150,5534,4848],{"class":1156},[1150,5536,2191],{"class":1356},[1150,5538,4853],{"class":1156},[1150,5540,3186],{"class":1163},[1150,5542,5543],{"class":1152,"line":2435},[1150,5544,1400],{"class":1163},[1150,5546,5547],{"class":1152,"line":2440},[1150,5548,1170],{"emptyLinePlaceholder":1169},[1150,5550,5551],{"class":1152,"line":2452},[1150,5552,1176],{"class":1175},[1150,5554,5555],{"class":1152,"line":2463},[1150,5556,5557],{"class":1175}," * Retrieves and removes the first element of this list,\n",[1150,5559,5560],{"class":1152,"line":2472},[1150,5561,5370],{"class":1175},[1150,5563,5564],{"class":1152,"line":5153},[1150,5565,1497],{"class":1175},[1150,5567,5569,5571,5573],{"class":1152,"line":5568},55,[1150,5570,1502],{"class":1175},[1150,5572,1652],{"class":1156},[1150,5574,5575],{"class":1175}," the first element of this list, or {@code null} if\n",[1150,5577,5579],{"class":1152,"line":5578},56,[1150,5580,5581],{"class":1175}," *     this list is empty\n",[1150,5583,5585,5587,5589],{"class":1152,"line":5584},57,[1150,5586,1502],{"class":1175},[1150,5588,3245],{"class":1156},[1150,5590,3918],{"class":1175},[1150,5592,5594],{"class":1152,"line":5593},58,[1150,5595,1196],{"class":1175},[1150,5597,5599,5601,5603,5606],{"class":1152,"line":5598},59,[1150,5600,1443],{"class":1156},[1150,5602,2949],{"class":1163},[1150,5604,5605],{"class":1278},"pollFirst",[1150,5607,1449],{"class":1163},[1150,5609,5611,5613,5615,5617,5619,5621],{"class":1152,"line":5610},60,[1150,5612,2654],{"class":1156},[1150,5614,1204],{"class":1163},[1150,5616,1207],{"class":1156},[1150,5618,2661],{"class":1163},[1150,5620,1363],{"class":1156},[1150,5622,2666],{"class":1163},[1150,5624,5626,5628,5630,5632,5634,5636,5638,5640,5642,5644],{"class":1152,"line":5625},61,[1150,5627,1685],{"class":1156},[1150,5629,2704],{"class":1163},[1150,5631,1807],{"class":1156},[1150,5633,2191],{"class":1356},[1150,5635,4845],{"class":1163},[1150,5637,4848],{"class":1156},[1150,5639,2191],{"class":1356},[1150,5641,4853],{"class":1156},[1150,5643,3743],{"class":1278},[1150,5645,3746],{"class":1163},[1150,5647,5649],{"class":1152,"line":5648},62,[1150,5650,1400],{"class":1163},[1150,5652,5654],{"class":1152,"line":5653},63,[1150,5655,1170],{"emptyLinePlaceholder":1169},[1150,5657,5659],{"class":1152,"line":5658},64,[1150,5660,1176],{"class":1175},[1150,5662,5664],{"class":1152,"line":5663},65,[1150,5665,5666],{"class":1175}," * Retrieves and removes the last element of this list,\n",[1150,5668,5670],{"class":1152,"line":5669},66,[1150,5671,5370],{"class":1175},[1150,5673,5675],{"class":1152,"line":5674},67,[1150,5676,1497],{"class":1175},[1150,5678,5680,5682,5684],{"class":1152,"line":5679},68,[1150,5681,1502],{"class":1175},[1150,5683,1652],{"class":1156},[1150,5685,5686],{"class":1175}," the last element of this list, or {@code null} if\n",[1150,5688,5690],{"class":1152,"line":5689},69,[1150,5691,5581],{"class":1175},[1150,5693,5695,5697,5699],{"class":1152,"line":5694},70,[1150,5696,1502],{"class":1175},[1150,5698,3245],{"class":1156},[1150,5700,3918],{"class":1175},[1150,5702,5704],{"class":1152,"line":5703},71,[1150,5705,1196],{"class":1175},[1150,5707,5709,5711,5713,5716],{"class":1152,"line":5708},72,[1150,5710,1443],{"class":1156},[1150,5712,2949],{"class":1163},[1150,5714,5715],{"class":1278},"pollLast",[1150,5717,1449],{"class":1163},[1150,5719,5721,5723,5725,5727,5729,5731],{"class":1152,"line":5720},73,[1150,5722,2654],{"class":1156},[1150,5724,1204],{"class":1163},[1150,5726,1207],{"class":1156},[1150,5728,2790],{"class":1163},[1150,5730,1363],{"class":1156},[1150,5732,2204],{"class":1163},[1150,5734,5736,5738,5740,5742,5744,5746,5748,5750,5752,5754],{"class":1152,"line":5735},74,[1150,5737,1685],{"class":1156},[1150,5739,2831],{"class":1163},[1150,5741,1807],{"class":1156},[1150,5743,2191],{"class":1356},[1150,5745,4845],{"class":1163},[1150,5747,4848],{"class":1156},[1150,5749,2191],{"class":1356},[1150,5751,4853],{"class":1156},[1150,5753,3850],{"class":1278},[1150,5755,3853],{"class":1163},[1150,5757,5759],{"class":1152,"line":5758},75,[1150,5760,1400],{"class":1163},[1150,5762,5764],{"class":1152,"line":5763},76,[1150,5765,1170],{"emptyLinePlaceholder":1169},[1150,5767,5769],{"class":1152,"line":5768},77,[1150,5770,1176],{"class":1175},[1150,5772,5774],{"class":1152,"line":5773},78,[1150,5775,5776],{"class":1175}," * Pushes an element onto the stack represented by this list.  In other\n",[1150,5778,5780],{"class":1152,"line":5779},79,[1150,5781,5782],{"class":1175}," * words, inserts the element at the front of this list.\n",[1150,5784,5786],{"class":1152,"line":5785},80,[1150,5787,1497],{"class":1175},[1150,5789,5791],{"class":1152,"line":5790},81,[1150,5792,5793],{"class":1175}," * \u003Cp>This method is equivalent to {@link #addFirst}.\n",[1150,5795,5797],{"class":1152,"line":5796},82,[1150,5798,1497],{"class":1175},[1150,5800,5802,5804,5806,5808],{"class":1152,"line":5801},83,[1150,5803,1502],{"class":1175},[1150,5805,1505],{"class":1156},[1150,5807,1642],{"class":1331},[1150,5809,5810],{"class":1175}," the element to push\n",[1150,5812,5814,5816,5818],{"class":1152,"line":5813},84,[1150,5815,1502],{"class":1175},[1150,5817,3245],{"class":1156},[1150,5819,3918],{"class":1175},[1150,5821,5823],{"class":1152,"line":5822},85,[1150,5824,1196],{"class":1175},[1150,5826,5828,5830,5832,5835],{"class":1152,"line":5827},86,[1150,5829,1443],{"class":1156},[1150,5831,1773],{"class":1156},[1150,5833,5834],{"class":1278}," push",[1150,5836,1672],{"class":1163},[1150,5838,5840,5842],{"class":1152,"line":5839},87,[1150,5841,5260],{"class":1278},[1150,5843,1680],{"class":1163},[1150,5845,5847],{"class":1152,"line":5846},88,[1150,5848,1400],{"class":1163},[1150,5850,5852],{"class":1152,"line":5851},89,[1150,5853,1170],{"emptyLinePlaceholder":1169},[1150,5855,5857],{"class":1152,"line":5856},90,[1150,5858,1176],{"class":1175},[1150,5860,5862],{"class":1152,"line":5861},91,[1150,5863,5864],{"class":1175}," * Pops an element from the stack represented by this list.  In other\n",[1150,5866,5868],{"class":1152,"line":5867},92,[1150,5869,5870],{"class":1175}," * words, removes and returns the first element of this list.\n",[1150,5872,5874],{"class":1152,"line":5873},93,[1150,5875,1497],{"class":1175},[1150,5877,5879,5882,5885,5888,5891],{"class":1152,"line":5878},94,[1150,5880,5881],{"class":1175}," * \u003Cp>This method is equivalent to {",[1150,5883,5884],{"class":1156},"@link",[1150,5886,5887],{"class":1175}," #",[1150,5889,5890],{"class":1331},"removeFirst()",[1150,5892,5893],{"class":1175},"}.\n",[1150,5895,5897],{"class":1152,"line":5896},95,[1150,5898,1497],{"class":1175},[1150,5900,5902,5904,5906],{"class":1152,"line":5901},96,[1150,5903,1502],{"class":1175},[1150,5905,1652],{"class":1156},[1150,5907,5908],{"class":1175}," the element at the front of this list (which is the top\n",[1150,5910,5912],{"class":1152,"line":5911},97,[1150,5913,5914],{"class":1175}," *         of the stack represented by this list)\n",[1150,5916,5918,5920,5922,5924],{"class":1152,"line":5917},98,[1150,5919,1502],{"class":1175},[1150,5921,1518],{"class":1156},[1150,5923,3020],{"class":1278},[1150,5925,3023],{"class":1175},[1150,5927,5929,5931,5933],{"class":1152,"line":5928},99,[1150,5930,1502],{"class":1175},[1150,5932,3245],{"class":1156},[1150,5934,3918],{"class":1175},[1150,5936,5938],{"class":1152,"line":5937},100,[1150,5939,1196],{"class":1175},[1150,5941,5943,5945,5947,5950],{"class":1152,"line":5942},101,[1150,5944,1443],{"class":1156},[1150,5946,2949],{"class":1163},[1150,5948,5949],{"class":1278},"pop",[1150,5951,1449],{"class":1163},[1150,5953,5955,5957,5959],{"class":1152,"line":5954},102,[1150,5956,1685],{"class":1156},[1150,5958,3270],{"class":1278},[1150,5960,1558],{"class":1163},[1150,5962,5964],{"class":1152,"line":5963},103,[1150,5965,1400],{"class":1163},[1150,5967,5969],{"class":1152,"line":5968},104,[1150,5970,1170],{"emptyLinePlaceholder":1169},[1150,5972,5974],{"class":1152,"line":5973},105,[1150,5975,1176],{"class":1175},[1150,5977,5979],{"class":1152,"line":5978},106,[1150,5980,3876],{"class":1175},[1150,5982,5984],{"class":1152,"line":5983},107,[1150,5985,3881],{"class":1175},[1150,5987,5989],{"class":1152,"line":5988},108,[1150,5990,3886],{"class":1175},[1150,5992,5994],{"class":1152,"line":5993},109,[1150,5995,1497],{"class":1175},[1150,5997,5999,6001,6003,6005],{"class":1152,"line":5998},110,[1150,6000,1502],{"class":1175},[1150,6002,1505],{"class":1156},[1150,6004,3447],{"class":1331},[1150,6006,3450],{"class":1175},[1150,6008,6010,6012,6014],{"class":1152,"line":6009},111,[1150,6011,1502],{"class":1175},[1150,6013,1652],{"class":1156},[1150,6015,3909],{"class":1175},[1150,6017,6019,6021,6023],{"class":1152,"line":6018},112,[1150,6020,1502],{"class":1175},[1150,6022,3245],{"class":1156},[1150,6024,3918],{"class":1175},[1150,6026,6028],{"class":1152,"line":6027},113,[1150,6029,1196],{"class":1175},[1150,6031,6033,6035,6037,6039],{"class":1152,"line":6032},114,[1150,6034,1443],{"class":1156},[1150,6036,1666],{"class":1156},[1150,6038,3931],{"class":1278},[1150,6040,3475],{"class":1163},[1150,6042,6044,6046,6048],{"class":1152,"line":6043},115,[1150,6045,1685],{"class":1156},[1150,6047,3472],{"class":1278},[1150,6049,3942],{"class":1163},[1150,6051,6053],{"class":1152,"line":6052},116,[1150,6054,1400],{"class":1163},[1150,6056,6058],{"class":1152,"line":6057},117,[1150,6059,1170],{"emptyLinePlaceholder":1169},[1150,6061,6063],{"class":1152,"line":6062},118,[1150,6064,1176],{"class":1175},[1150,6066,6068],{"class":1152,"line":6067},119,[1150,6069,3965],{"class":1175},[1150,6071,6073],{"class":1152,"line":6072},120,[1150,6074,3881],{"class":1175},[1150,6076,6078],{"class":1152,"line":6077},121,[1150,6079,3886],{"class":1175},[1150,6081,6083],{"class":1152,"line":6082},122,[1150,6084,1497],{"class":1175},[1150,6086,6088,6090,6092,6094],{"class":1152,"line":6087},123,[1150,6089,1502],{"class":1175},[1150,6091,1505],{"class":1156},[1150,6093,3447],{"class":1331},[1150,6095,3450],{"class":1175},[1150,6097,6099,6101,6103],{"class":1152,"line":6098},124,[1150,6100,1502],{"class":1175},[1150,6102,1652],{"class":1156},[1150,6104,3909],{"class":1175},[1150,6106,6108,6110,6112],{"class":1152,"line":6107},125,[1150,6109,1502],{"class":1175},[1150,6111,3245],{"class":1156},[1150,6113,3918],{"class":1175},[1150,6115,6117],{"class":1152,"line":6116},126,[1150,6118,1196],{"class":1175},[1150,6120,6122,6124,6126,6128],{"class":1152,"line":6121},127,[1150,6123,1443],{"class":1156},[1150,6125,1666],{"class":1156},[1150,6127,4016],{"class":1278},[1150,6129,3475],{"class":1163},[1150,6131,6133,6135,6137,6139,6141],{"class":1152,"line":6132},128,[1150,6134,1801],{"class":1156},[1150,6136,3482],{"class":1163},[1150,6138,1807],{"class":1156},[1150,6140,2191],{"class":1356},[1150,6142,1351],{"class":1163},[1150,6144,6146,6148,6150,6152,6154,6156,6158,6160,6162,6164,6166],{"class":1152,"line":6145},129,[1150,6147,3493],{"class":1156},[1150,6149,3496],{"class":1163},[1150,6151,1207],{"class":1156},[1150,6153,3501],{"class":1163},[1150,6155,1363],{"class":1156},[1150,6157,4045],{"class":1163},[1150,6159,3509],{"class":1156},[1150,6161,2191],{"class":1356},[1150,6163,3514],{"class":1163},[1150,6165,1363],{"class":1156},[1150,6167,4056],{"class":1163},[1150,6169,6171,6173,6175,6177,6179],{"class":1152,"line":6170},130,[1150,6172,3524],{"class":1156},[1150,6174,3527],{"class":1163},[1150,6176,1807],{"class":1156},[1150,6178,2191],{"class":1356},[1150,6180,1351],{"class":1163},[1150,6182,6184,6186],{"class":1152,"line":6183},131,[1150,6185,3538],{"class":1278},[1150,6187,3541],{"class":1163},[1150,6189,6191,6193,6195],{"class":1152,"line":6190},132,[1150,6192,3546],{"class":1156},[1150,6194,1688],{"class":1356},[1150,6196,1465],{"class":1163},[1150,6198,6200],{"class":1152,"line":6199},133,[1150,6201,3555],{"class":1163},[1150,6203,6205],{"class":1152,"line":6204},134,[1150,6206,3560],{"class":1163},[1150,6208,6210,6212,6214],{"class":1152,"line":6209},135,[1150,6211,2210],{"class":1163},[1150,6213,2213],{"class":1156},[1150,6215,2216],{"class":1163},[1150,6217,6219,6221,6223,6225,6227,6229,6231,6233,6235,6237,6239],{"class":1152,"line":6218},136,[1150,6220,3493],{"class":1156},[1150,6222,3496],{"class":1163},[1150,6224,1207],{"class":1156},[1150,6226,3501],{"class":1163},[1150,6228,1363],{"class":1156},[1150,6230,4045],{"class":1163},[1150,6232,3509],{"class":1156},[1150,6234,2191],{"class":1356},[1150,6236,3514],{"class":1163},[1150,6238,1363],{"class":1156},[1150,6240,4056],{"class":1163},[1150,6242,6244,6246,6248,6250],{"class":1152,"line":6243},137,[1150,6245,3524],{"class":1156},[1150,6247,3599],{"class":1163},[1150,6249,3602],{"class":1278},[1150,6251,3605],{"class":1163},[1150,6253,6255,6257],{"class":1152,"line":6254},138,[1150,6256,3538],{"class":1278},[1150,6258,3541],{"class":1163},[1150,6260,6262,6264,6266],{"class":1152,"line":6261},139,[1150,6263,3546],{"class":1156},[1150,6265,1688],{"class":1356},[1150,6267,1465],{"class":1163},[1150,6269,6271],{"class":1152,"line":6270},140,[1150,6272,3555],{"class":1163},[1150,6274,6276],{"class":1152,"line":6275},141,[1150,6277,3560],{"class":1163},[1150,6279,6281],{"class":1152,"line":6280},142,[1150,6282,1395],{"class":1163},[1150,6284,6286,6288,6290],{"class":1152,"line":6285},143,[1150,6287,1685],{"class":1156},[1150,6289,2151],{"class":1356},[1150,6291,1465],{"class":1163},[1150,6293,6295],{"class":1152,"line":6294},144,[1150,6296,1400],{"class":1163},[6298,6299,6300],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":11,"searchDepth":984,"depth":984,"links":6302},[6303,6304,6305],{"id":901,"depth":984,"text":901},{"id":967,"depth":984,"text":968},{"id":1110,"depth":984,"text":1110,"children":6306},[6307,6308,6309,6310,6311,6312,6313,6314,6315,6316],{"id":1114,"depth":1001,"text":1114},{"id":1403,"depth":1001,"text":1403},{"id":1580,"depth":1001,"text":1580},{"id":2882,"depth":1001,"text":2882},{"id":3193,"depth":1001,"text":3193},{"id":4173,"depth":1001,"text":4173},{"id":4316,"depth":1001,"text":4316},{"id":4499,"depth":1001,"text":4499},{"id":4750,"depth":1001,"text":4751},{"id":5158,"depth":1001,"text":5159},"md",{},{"title":361,"description":11},"other\u002Fjava\u002Fcollection\u002Flist-linkedlist","CK4l-DIPTSnKNNjPm21Zvm8atUH9m5rnCjnekgc62Bk",1775496427557]