Java链表数据结构分析

简介: Java链表我们用的比较多了。LinkedList、LinkedHashSet、ListHashMap里面底层都用到了链表,和数组同别的,可以认为是对数组的补充。

Java链表我们用的比较多了。

LinkedList、LinkedHashSet、ListHashMap里面底层都用到了链表,和数组同别的,可以认为是对数组的补充。

因为链表的头节点、尾节点等特性,常常用来排序使用。可以用来实现栈,队列等非线性

链表由于查询时候要从头到尾遍历,所以查询效率不如数组,但是链表的插入和删除速度更快。我们通常对频繁使用

插入和删除的集合推荐使用LinkedList、LinkedHashSet、ListHashMap

单向链表

双向链表

下面是一种整型类型的链表实体类

public class ListNode {
  int val;
  ListNode next;
  public int getVal() {
    return val;
  }
  public void setVal(int val) {
    this.val = val;
  }
  public ListNode getNext() {
    return next;
  }
  public void setNext(ListNode next) {
    this.next = next;
  }
  @Override
  public String toString() {
    return "ListNode{" +
        "val=" + val +
        ", next=" + next +
        '}';
  }
}

我们认识到链表实体类一般包括自己当前节点的值,第一个为头节点,然后的参数为next,即为下一个节点。

链表通常由一连串节点组成,每个节点包含该节点的数据和指向上一节点或者下一节点的引用

链表很强的术语是头节点,上个节点,下个节点,尾节点


我们也可以通过平常用LinkedList一些方法来体验链表的应用。Linked增加、删除、查询底层即为链表

增加:
add(E e):在链表后添加一个元素;   通用方法
addFirst(E e):在链表头部插入一个元素;  特有方法
addLast(E e):在链表尾部添加一个元素;  特有方法
push(E e):与addFirst方法一致  
offer(E e):在链表尾部插入一个元素                                                                                                                                                  add(int index, E element):在指定位置插入一个元素。      
offerFirst(E e):JDK1.6版本之后,在头部添加; 特有方法                                                                                                         offerLast(E e):JDK1.6版本之后,在尾部添加; 特有方法
删除:
remove() :移除链表中第一个元素;    通用方法  
remove(E e):移除指定元素;   通用方法
removeFirst(E e):删除头,获取元素并删除;  特有方法
removeLast(E e):删除尾;  特有方法
pollFirst():删除头;  特有方法
pollLast():删除尾;  特有方法
pop():和removeFirst方法一致,删除头。 
poll():查询并移除第一个元素     特有方法    
查:
get(int index):按照下标获取元素;  通用方法
getFirst():获取第一个元素;  特有方法
getLast():获取最后一个元素; 特有方法
peek():获取第一个元素,但是不移除;  特有方法
peekFirst():获取第一个元素,但是不移除; 
peekLast():获取最后一个元素,但是不移除;
pollFirst():查询并删除头;  特有方法
pollLast():删除尾;  特有方法
poll():查询并移除第一个元素     特有方法
相关文章
|
28天前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
42 1
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
18天前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
20天前
|
存储 C语言
【数据结构】手把手教你单链表(c语言)(附源码)
本文介绍了单链表的基本概念、结构定义及其实现方法。单链表是一种内存地址不连续但逻辑顺序连续的数据结构,每个节点包含数据域和指针域。文章详细讲解了单链表的常见操作,如头插、尾插、头删、尾删、查找、指定位置插入和删除等,并提供了完整的C语言代码示例。通过学习单链表,可以更好地理解数据结构的底层逻辑,提高编程能力。
48 4
|
21天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
40 2
|
22天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
22天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
22天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
14 2
|
27天前
|
存储 算法 Java
Java 中常用的数据结构
【10月更文挑战第20天】这些数据结构在 Java 编程中都有着广泛的应用,掌握它们的特点和用法对于提高编程能力和解决实际问题非常重要。
25 6
|
20天前
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
39 0
下一篇
无影云桌面