LinkedList的简单介绍

java.util.LinkedList 集合数据存储的结构是链表结构。LinkedList是一个双向链表
在实际开发中,对一个集合元素的添加和删除,经常涉及到首尾操作,而LinkedList就提供了大量的首尾操作的方法

LinkedList集合的特点

1、方便元素的添加、删除

2、元素的查询慢

2、里面包括了大量首尾首尾操作的方法

注意:LinkedList集合的方法不能使用多态

为什么说LinkedList集合添加、删除元素方便,查询元素慢

首先,LinkedList集合数据存储的结构是链表结构,

而链表是添加、删除元素方便,查询元素慢的:

查询慢:链表中地址不是连续的每次查询元素都必须从头开始查询

增删快:链表结构增加/删除一个元素对链表的整体结构没有影响,所以增删快

操作集合首尾的方法、是否为空判断方法

public void addFirst(E e):将指定元素插入此列表的开头。
public void addLast(E e):将指定元素添加到此列表的结尾。 public E getFirst():返回此列表的第一个元素。
public E getLast():返回此列表的最后一个元素。 public E removeFirst():移除并返回此列表的第一个元素。
public E removeLast():移除并返回此列表的最后一个元素。 public void push(E e):将元素推入此列表所表示的堆栈。
public E pop():从此列表所表示的堆处弹出一个元素。 public boolean isEmpty():如果列表不包含元素,则返回true

addFirst()和addLast()方法

public class DemoLinkedListAddFirstLast {
public static void main(String[] args) {
// 创建LinkedList链表集合对象
LinkedList<String> linkedList = new LinkedList<>(); // 向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
linkedList.add(3, "链表元素3");
linkedList.add(4, "链表元素4");
linkedList.add(5, "链表元素5");
System.out.println(linkedList); // 用addFirst方法向链表集合开头添加一个元素
linkedList.addFirst("开头");
// 用addLast方法向链表集合开头添加一个元素
linkedList.addLast("结尾");
System.out.println(linkedList);
}
}
输出结果:
[链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5]
[开头, 链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5, 结尾]

getFirst()和getLact()方法

import java.util.LinkedList;

public class DemoLinkedListGetFirstLast {
public static void main(String[] args) {
// 创建LinkedList链表集合对象
LinkedList<String> linkedList = new LinkedList<>(); // 向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
linkedList.add(3, "链表元素3");
linkedList.add(4, "链表元素4");
linkedList.add(5, "链表元素5");
System.out.println(linkedList); // 获取此列表的第一个元素。
String first = linkedList.getFirst();
// 获取此列表的最后一个元素。
String last = linkedList.getLast();
System.out.println("第一个元素:" + first);
System.out.println("最后一个元素:" + last);
}
}
输出结果:
[链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5]
第一个元素:链表元素0
最后一个元素:链表元素5

removeFirst()和removeLast()方法

import java.util.LinkedList;

public class DemoLinkedListRemoveFirstLast {
public static void main(String[] args) {
// 创建LinkedList链表集合对象
LinkedList<String> linkedList = new LinkedList<>(); // 向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
linkedList.add(3, "链表元素3");
linkedList.add(4, "链表元素4");
linkedList.add(5, "链表元素5");
System.out.println(linkedList); // 移除并返回此列表的第一个元素
String first = linkedList.removeFirst();
// 移除并返回此列表的最后一个元素
String last = linkedList.removeLast();
System.out.println("移除的第一个元素:" + first);
System.out.println("移除的最后一个元素:" + last);
System.out.println("此时的集合:" + linkedList);
}
}
输出结果:
[链表元素0, 链表元素1, 链表元素2, 链表元素3, 链表元素4, 链表元素5]
移除的第一个元素:链表元素0
移除的最后一个元素:链表元素5
此时的集合:[链表元素1, 链表元素2, 链表元素3, 链表元素4]

push()和pop()方法

说明:push()方法和addFirst()方法功能一样

     pop()方法和removeFirst()方法功能一样

import java.util.LinkedList;

public class DemoLinkedListPushPop {
public static void main(String[] args) {
// 创建LinkedList链表集合对象
LinkedList<String> linkedList = new LinkedList<>(); // 向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2");
System.out.println("原集合:" + linkedList); // 将元素推入此列表所表示的堆栈
linkedList.push("push元素");
System.out.println("push()操作后的集合:" + linkedList); // 从此列表所表示的堆处弹出一个元素
linkedList.pop();
System.out.println("push()操作后的集合:" + linkedList);
}
}
输出结果:
原集合:[链表元素0, 链表元素1, 链表元素2]
push()操作后的集合:[push元素, 链表元素0, 链表元素1, 链表元素2]
push()操作后的集合:[链表元素0, 链表元素1, 链表元素2]

isEmpty()方法

import java.util.LinkedList;

public class DemoLinkedListIsEmpty {
public static void main(String[] args) {
// 创建LinkedList链表集合对象
LinkedList<String> linkedList = new LinkedList<>(); boolean b1 = linkedList.isEmpty();
System.out.println("集合是否为空:" + b1); // 向linkedList添加元素
linkedList.add(0, "链表元素0");
linkedList.add(1, "链表元素1");
linkedList.add(2, "链表元素2"); boolean b2 = linkedList.isEmpty();
System.out.println("集合是否为空:" + b2);
}
}
输出结果:
集合是否为空:true
集合是否为空:false

Java Linked集合的简单介绍和常用方法的使用的更多相关文章

  1. Java泛型使用的简单介绍

    目录 一. 泛型是什么 二. 使用泛型有什么好处 三. 泛型类 四. 泛型接口 五. 泛型方法 六. 限定类型变量 七. 泛型通配符 7.1 上界通配符 7.2 下界通配符 7.3 无限定通配符 八. ...

  2. java反射机制的简单介绍

    参考博客: https://blog.csdn.net/mlc1218559742/article/details/52754310 先给出反射机制中常用的几个方法: Class.forName (& ...

  3. java面试题之简单介绍一下集合框架

    集合框架分为三块:List列表.Set集合.Map映射 List列表在数据结构上可以被看做线性表,常用的有ArrayList和LinkList(不常用的有Vector(类似于ArrayList)),他 ...

  4. Java中NIO的简单介绍

    NIO基本介绍 Java NIO(New IO) 也有人称之为Java non-blocking IO 是从Java1.4版本开始引入的一个新的IO API,可以代替标准的IO API.NIO与原来的 ...

  5. java之集合框架使用细节及常用方法

    集合类的由来:   对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定.  就使用集合容器进行存储. 集合特点: 1,用于存储对象的容器. 2,集合的长度是可变的. 3,集合中不可以存储基本 ...

  6. java中数据流的简单介绍

    java中的I/O操作主要是基于数据流进行操作的,数据流表示了字符或者字节的流动序列. java.io是数据流操作的主要软件包 java.nio是对块传输进行的支持 数据流基本概念 “流是磁盘或其它外 ...

  7. Java ArrayList类的简单介绍

    ArrayList类的说明: ArrayList类是List接口的实现类,java.util.ArrayList集合数据存储的结构是数组结构. 特点: 元素增删慢,查找快.(由于日常开发中使用最多的功 ...

  8. Java 用集合实现简单的斗地主发牌

    创建数组.集合,存放数据 public class FightAgainstLandlords { /** * poker集合,存储54张牌 */ private ArrayList<Strin ...

  9. Java文件I/O简单介绍

    目录 一.File类 1.1 构造方法 1.2 常用方法 1.3 例子 二.基础I/O:字节流.字符流 2.1 字节流 2.1.1 字节输出流 OutputStream 2.1.2 FileOutpu ...

随机推荐

  1. 2018-8-10-win10-sdk-是否向下兼容

    title author date CreateTime categories win10 sdk 是否向下兼容 lindexi 2018-08-10 19:16:53 +0800 2018-2-13 ...

  2. git 提交添加 emoij 文字

    可能看到 git 提交是文本,就认为他无法使用表情图片,实际上 git 提交是可以添加表情 本文告诉大家如何做出下面图片提交 在 git 提交的时候,可以添加表情,只需要在字符串加上表示表情的文本 如 ...

  3. H3C HDLC协议使用限制

  4. P1103 走迷宫三

    题目描述 大魔王抓住了爱丽丝,将她丢进了一口枯井中,并堵住了井口. 爱丽丝在井底发现了一张地图,他发现他现在身处一个迷宫当中,从地图中可以发现,迷宫是一个N*M的矩形,爱丽丝身处迷宫的左上角,唯一的出 ...

  5. java 操作流的步骤

    File类本身是与文件操作有关,但是如果要想操作内容则必须使用字节流或字符流完成,但是不管是使用何种的输入输出流,其基本的操作原理是一样的(以文件流为准): 一.使用File类找到一个文件对象,得到I ...

  6. MySQL之Field 'email' doesn't have a default value问题

    MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值照成的. 比如我们创建一个表: CREATE ...

  7. linux进程互斥等待

    我们已经见到当一个进程调用 wake_up 在等待队列上, 所有的在这个队列上等待的进程 被置为可运行的. 在许多情况下, 这是正确的做法. 但是, 在别的情况下, 可能提前知道 只有一个被唤醒的进程 ...

  8. javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法

    * offsetWidth 水平方向 width + 左右padding + 左右border-width * offsetHeight 垂直方向 height + 上下padding + 上下bor ...

  9. Apply,Call,bind对比

    apply.call call和apply都是为了改变上下文背景存在的,即改变函数内部指向 javascript一大特点是函数存在定义时的上下文,运行时的上下文和上下文可改变的概念 apply.cal ...

  10. js的cookie操作及知识点详解

    <html> <head> <script type="text/javascript"> function getCookie(c_name) ...