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():查询并移除第一个元素     特有方法
相关文章
|
18小时前
|
算法 索引
【数据结构与算法 | 基础篇】[链表专题]力扣141, 142
【数据结构与算法 | 基础篇】[链表专题]力扣141, 142
|
18小时前
|
算法
【数据结构与算法 | 基础篇】[链表专题]力扣82
【数据结构与算法 | 基础篇】[链表专题]力扣82
|
18小时前
|
算法
【数据结构与算法 | 基础篇】[链表专题]力扣21, 234
【数据结构与算法 | 基础篇】[链表专题]力扣21, 234
|
19小时前
|
算法
【数据结构与算法 | 基础篇】[链表专题]力扣LCR077, 83
【数据结构与算法 | 基础篇】[链表专题]力扣LCR077, 83
|
19小时前
|
存储 算法
【数据结构与算法 | 基础篇】[链表专题]力扣206, 203, 19
【数据结构与算法 | 基础篇】[链表专题]力扣206, 203, 19
|
22小时前
|
存储 C语言
链表—初始化指针变和创建新的节点------区别应用分析
链表—初始化指针变和创建新的节点------区别应用分析
|
1天前
|
存储
【数据结构】带头+双向+循环链表(DList)(增、删、查、改)详解
【数据结构】带头+双向+循环链表(DList)(增、删、查、改)详解
|
1天前
|
存储 安全 C++
【数据结构】无头+单向+非循环链表(SList)(增、删、查、改)详解
【数据结构】无头+单向+非循环链表(SList)(增、删、查、改)详解
|
2天前
|
监控 Java 开发者
Java一分钟之-Java性能分析与调优:JProfiler, VisualVM等工具
【5月更文挑战第21天】本文介绍了Java性能优化的两个利器——JProfiler和VisualVM。JProfiler通过CPU Profiler、内存分析器和线程视图帮助解决过度CPU使用、内存泄漏和线程阻塞问题;VisualVM则聚焦于GC行为调整和类加载优化,以减少内存压力和提高应用性能。使用这些工具进行定期性能检查,是提升Java应用效率的关键。
17 0