JavaSE——集合框架一(4/7)-List系列集合:LinkedList集合的底层原理、特有方法、队列、栈

简介: JavaSE——集合框架一(4/7)-List系列集合:LinkedList集合的底层原理、特有方法、队列、栈

LinkedList集合的底层原理

  • 基于双链表实现的。

双链表在数据结构中涉及到,我们简单看一遍单向链表和双向链表的结构:

  • 特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的

特有方法

LinkedList新增了:很多首尾操作的特有方法

图片.png

下面将通过LinkedList的两个应用场景来使用这些特有方法。

LinkedList的应用场景之一:用来设计队列

队列

  • 队列的特点是:先进先出,后进后出

只是在首尾增删元素,用LinkedList来实现很合适!

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
 
public class ListDemo2 {
    public static void main(String[] args) {
        //1.创建一个队列
        LinkedList<String> queue = new LinkedList<>();
        queue.addLast("第一号人");     //[]                <-    第一号人
        queue.addLast("第二号人");     //[第一号人]          <-   第二号人
        queue.addLast("第三号人");     //[第一号人,第二号人]  <-   第三号人
        queue.addLast("第四号人");     //......
        System.out.println(queue);
 
        //出队
        System.out.println(queue.removeFirst());   //          <-  [第一号人, 第二号人, 第三号人, 第四号人]
        System.out.println(queue.removeFirst());   //第一号人   <-  [ 第二号人, 第三号人, 第四号人]
        System.out.println(queue.removeFirst());   //第一号人 第二号人  <-  [ 第三号人, 第四号人]
        System.out.println(queue);                 //第一号人 第二号人 第三号人,  <-  [第四号人]
    }
}

运行结果:


LinkedList的应用场景之一:用来设计栈

  • 栈的特点:后进先出,先进后出

只是在首部增删元素,同样地,用LinkedList来实现。

  • 数据进入栈模型的过程称为:压/进栈(push)
  • 数据离开栈模型的过程称为:弹/出栈(pop)

所以,原本我们应该使用的addFirst可以用push代替;removeFirst可以用pop代替。


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
 
public class ListDemo2 {
    public static void main(String[] args) {
 
        //2.创建一个栈对象
        LinkedList<String> stack = new LinkedList<>();
 
        //压栈
        stack.push("第一颗子弹");    //第一颗子弹 -> []
        stack.push("第二颗子弹");    //第二颗子弹 -> [第一颗子弹]
        stack.push("第三颗子弹");    //第三颗子弹 -> [第二颗子弹, 第一颗子弹]
        stack.push("第四颗子弹");    //第四颗子弹 -> [第三颗子弹, 第二颗子弹, 第一颗子弹]
        System.out.println(stack);    //[第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
 
        //出栈
        System.out.println(stack.pop());    // <- [第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
        System.out.println(stack.pop());    // 第四颗子弹 <- [第三颗子弹, 第二颗子弹, 第一颗子弹]
        System.out.println(stack);          // [第二颗子弹, 第一颗子弹]
    }
}


运行结果:


END



目录
相关文章
|
13天前
|
索引
List集合(方法简介,集合遍历)
List集合(方法简介,集合遍历)
|
15天前
|
存储 Java 测试技术
滚雪球学Java(57):解密Java中List接口底层实现原理
【6月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
24 2
滚雪球学Java(57):解密Java中List接口底层实现原理
|
1天前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
8 1
|
1天前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
7 1
|
9天前
|
存储 Java 索引
告别Java集合小白!一文读懂List的精髓
【6月更文挑战第17天】Java中的List接口作为有序集合,允许存储和操作有序元素,支持重复值。ArrayList和LinkedList是常见实现类:ArrayList基于数组,适合快速访问但插入删除慢;LinkedList基于链表,插入删除快但访问慢。了解其核心概念、方法及泛型使用,能提升编程效率和代码质量。示例代码展示了添加和访问元素。通过深入学习,可以更好地掌握List的高级用法。
|
15天前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。
|
18天前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
11 2
|
1天前
|
存储 消息中间件 算法
Java中的集合框架详解:List、Set、Map的使用场景
Java中的集合框架详解:List、Set、Map的使用场景
|
2天前
|
Java
JAVA构建List集合为树形结构的方法和代码
JAVA构建List集合为树形结构的方法和代码
|
9天前
|
Java 索引
Java List实战:手把手教你玩转ArrayList和LinkedList
【6月更文挑战第17天】在Java中,ArrayList和LinkedList是List接口的实现,分别基于动态数组和双向链表。ArrayList适合索引访问,提供快速读取,而LinkedList擅长插入和删除操作。通过示例展示了两者的基本用法,如添加、访问、修改和删除元素。根据场景选择合适的实现能优化性能。