首页 > 编程语言 >20230313 java.util.LinkedList

20230313 java.util.LinkedList

时间:2023-06-20 11:35:48浏览次数:62  
标签:20230313 链表 java LinkedList 实现 List 接口 util linkedList

简介

java.util.LinkedList

LinkedList 相对 ArrayList 要复杂一些,不是因为链表操作比数组操作复杂,而是 LinkedList 实现了更多接口

LinkedList 除了实现 List 接口外,还实现了 Queue 和 Deque 接口,也就意味着可以作为队列或双向队列使用

对链表的学习非常有帮助

感悟

对于接口的认识

首先要熟悉接口的定义,对于接口的分层是非常有意义的

例如List接口中有些接口方法在Collection接口中已经存在了,但是仍然又必须要重复定义,因为这些方法是List数据结构的特性

抽象类都是作为接口子类的骨架实现

关于LinkedList实现

然后再去研究底层的实现

如果只是对 List 线性表的研究,只需要查看 LinkedList 中关于 List 接口的实现就可以了,其他接口无需关心

有些字段是为了支持其他接口,才加上的

如果只是需要实现List接口,很多代码都可以去掉

也可以自己根据LinkedList代码,实现一个最简版本的List基于链表的实现,去掉多余的代码即可

源码学习

链表的操作比较细致,需要边调试边学习

注意:LinkedList 是双向链表,第一个节点的prev和最后一个节点的next都是null

测试代码:

LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
linkedList.add("d");

int b = linkedList.indexOf("b");

String s1 = linkedList.get(1);

linkedList.set(1, "s1");


linkedList.remove(1);

System.out.println(linkedList);

参考资料

标签:20230313,链表,java,LinkedList,实现,List,接口,util,linkedList
From: https://www.cnblogs.com/huangwenjie/p/17490654.html

相关文章

  • JavaScript学习 -- 对象的属性描述对象
    一、声明一个对象let对象={name:"公众号:编程有你",pwd:123456};二、输出对象属性的描述//console.log(Object.getOwnPropertyDescriptors(对象))获取多有属性console.log(Object.getOwnPropertyDescriptor(对象,'name'))获取指定的属性三、运行结果:writable:true, ......
  • JavaScript 指定格式化日期的方式
    JavaScript指定格式化日期的方式1、使用let和const的方式functionformatDate(date,format){constmap={"M":date.getMonth()+1,//月份"d":date.getDate(),//日"h":date.getHours(),//小时"m":date.getMinut......
  • Java设计模式之代理模式--经纪人的工作
    前言本文主要讲述代理模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。一.什么是代理模式代理模式是23种设计模式中结构型模式的一种,它的核心是通过代理类来完成其他对象的访问,降低访问者和被访问者的耦合度,也对功能进行了增强。二.生活中的代理......
  • 重复字母对(Java_文件IO操作)
    题目在words.txt文件中包含了87314个单词,编写Java程序从words文件中读取单词,并输出重复字母对最多的单词,将最多重复字母对的单词写入newwords.txt文件中。例如tooth这个单词有一个重复字母对,committee有三个重复字母对。流程图CodepackageIO;importjava.io.*;publicclasswo......
  • 简单计算器(Java_图形用户界面设计)
    题目编写一个应用程序,包括三个文本框和四个按钮,分别是“加”、“减”、“乘”、“除”,单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。布局Codepackageunit_9;importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt......
  • java:保留两位小数输出,两种方法
    第一种方法://四舍五入保留publicstaticvoidmain(String[]args){Doubledata=1.23635345;DecimalFormatdf=newDecimalFormat("0.00");System.out.println(df.format(data));}第二种方法://四舍五入保留publicstaticvoidmain(String[]args){......
  • 【Java】Map集合的遍历
    HashMap<String,String>map=newHashMap<>();map.put("001","赵");map.put("002","钱");map.put("003","孙");map.put("004","李......
  • JavaScript判断两个数组相等的四类方法
    在JavaScript中,数组本质上是一种特殊的对象,它的类型值会返回object。如果我们需要比较两个数组是否相等,不能像比较基本类型(String、Number、Boolean等)一样,使用===(或==)来判断,所以如果要比较数组是否相等,需要使用一些特殊方法。关于JS类型的判断,可见博文typeof详解。本文......
  • Java验证时间格式是否正确
     /***根据时间和时间格式校验是否正确*@paramlength校验的长度*@paramsDate校验的日期*@paramformat校验的格式*@return*/publicstaticbooleanisLegalDate(intlength,StringsDate,Stringformat){int......
  • JDK对于Java的作用
    JDK是JavaDevelopmentKit的缩写,是Java的开发工具包(SDK)。JDK是整个Java的核心,包括Java运行环境(JavaRuntimeEnvirnment,简称JRE),Java工具(比如javac、java、javap等等),以及Java基础类库(比如rt.jar)。JRE:包含了JVM+第三方类库;(JavaRuntimeEnvironment)是Java......