List linkedlist = new LinkedList<>(); 

LinkedList 底层数据结构是链表。

1. LinkedList 除了实现了List接口外,还实现了双向链表结构Deque的方法,使得可以在头尾两端插入和删除数据。

 public static void main(String[] args){
LinkedList<String> ll = new LinkedList<>(); //在链表尾部添加元素
ll.addLast("run10");
ll.addLast("run2");
ll.addLast("run4"); //在链表头部添加元素
ll.addFirst("run1"); System.out.println(ll); //查看最前面的元素
System.out.println(ll.getFirst()); //查看最后面的元素
System.out.println(ll.getLast()); //取出最前面的元素
System.out.println(ll.removeFirst()); //取出最后面的元素
System.out.println(ll.removeLast()); System.out.println(ll);

输出结果如下:

[run1, run10, run2, run4]
run1
run4
run1
run4
[run10, run2]

2.LinkedList除了实现List和Deque外,还实现了Queue的方法。 Queue是先进先出队列(FIFO),最常用的方法是offer,poll,peek

注:Queue接口在LinkedList的基础上添加了element(),offer(),peek(),poll(),remove()方法,以便成为Queue的实现:

public void Queuerun(){

       //实现一个队列
Queue<String> q = new LinkedList<String>(); //在队列后添加元素
System.out.println("新建队列:\t");
q.offer("run1");
q.offer("run2");
q.offer("run3");
q.offer("run4"); System.out.println(q); //取出第一个元素
String str = q.poll();
System.out.println("取出第一个元素:");
System.out.println(str);
System.out.println("取出第一个元素后的队列:\t");
System.out.println(q); //查看第一个元素
str = q.peek();
System.out.println("查看第一个元素:");
System.out.println(str);
System.out.println("查看当前队列:\t");
System.out.println(q);
}

结果显示如下:

新建队列:
[run1, run2, run3, run4]
取出第一个元素:
run1
取出第一个元素后的队列:
[run2, run3, run4]
查看第一个元素:
run2
查看当前队列:
[run2, run3, run4]

3.由于LinkedList有着丰富的插入,删除操作,因此可以实现很多种数据结构,如栈,也成为叠加栈,这是一个后进先出(LIFO)的容器。

LinkedList具有能够直接实现栈的所有功能的方法,用LinkedList实现的栈如下:

public class MyStack<T> {
private LinkedList<T> storage = new LinkedList<T>(); //压入栈
public void push(T v){storage.addFirst(v);} //查看栈顶端元素
public T peek(){return storage.getFirst();} //弹出栈顶端元素
public T pop(){return storage.removeFirst();} //是否为空
public boolean isEmpty(){return storage.isEmpty();} //展示栈结构
public String toString(){return storage.toString();}
}

注:如果你只需要栈的行为,这里就不需要继承LinkedList,因为继承会产生具有LinkedList的其他所有方法的类,而不是一个单纯的栈

集合-LinkedList的更多相关文章

  1. Java 集合 LinkedList的ListIterator

    Java 集合 LinkedList的ListIterator @author ixenos 摘要:ListIterator<E>是继承自Iterator<E>的接口.list ...

  2. 集合 LinkedList、ArrayList、Set、Treeset

    LinkedList中特有的方法: 1:方法介绍 addFirst(E e) addLast(E e) getFirst() getLast() removeFirst() removeLast() ...

  3. jdk源码->集合->LinkedList

    类的属性 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E&g ...

  4. java8集合--LinkedList纯源码

    package Queue; import java.util.*; import java.util.function.Consumer; /** * 双端队列主要实现list接口和Deque接口, ...

  5. java集合LinkedList

    基于jdk_1.8.0 关于List,主要是有序的可重复的数据结构.jdk主要实现类有ArrayList(底层使用数组).LinkedList(底层使用双向链表) LinkedList: (一)继承关 ...

  6. Java集合 LinkedList的原理及使用

    Java集合 LinkedList的原理及使用 LinkedList和ArrayList一样是集合List的实现类,虽然较之ArrayList,其使用场景并不多,但同样有用到的时候,那么接下来,我们来 ...

  7. Java入门系列之集合LinkedList源码分析(九)

    前言 上一节我们手写实现了单链表和双链表,本节我们来看看源码是如何实现的并且对比手动实现有哪些可优化的地方. LinkedList源码分析 通过上一节我们对双链表原理的讲解,同时我们对照如下图也可知道 ...

  8. 6.Java集合-LinkedList实现原理及源码分析

    Java中LinkedList的部分源码(本文针对1.7的源码) LinkedList的基本结构 jdk1.7之后,node节点取代了 entry ,带来的变化是,将1.6中的环形结构优化为了直线型链 ...

  9. Java源码-集合-LinkedList

    基于JDK1.8.0_191 介绍   LinkedList是以节点来保存数据的,不像数组在创建的时候需要申请一段连续的空间,LinkedList里的数据是可以存放在不同的空间当中,然后以内存地址作为 ...

  10. Java集合-LinkedList源码分析

    目录 1.数据结构-链表 2.ArrayList结构特性 3.构造方法 4.成员变量 5.常用的成员方法 6.Node节点 7.序列化原理 8.迭代器 9.总结 1.数据结构-链表 链表(Linked ...

随机推荐

  1. BeautifulSoup获取图片

    参看文档:https://www.cnblogs.com/forever-snow/p/8506746.html

  2. spring的设计模式

    spring中用到哪些设计模式   1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了: 2.模版模式,这个也很明显,在各种BeanFacto ...

  3. redis命令参考和redis文档中文翻译版

    找到了一份redis的中文翻译文档,觉得适合学习和查阅.这份文档翻译的真的很良心啊,他是<Redis 设计与实现>一书的作者黄健宏翻译的. 地址:http://redisdoc.com/i ...

  4. MYSQL二进制5.7.安装

    一.下载MySQL二进制软件包 下载连接:MYSQ安装包下载 官网MySQL有四个版本:GA版.DMR版.RC版.Beta版.一般生产和测试环境使用GA版(常规可用的版本,经过bug修复测试) 二.安 ...

  5. 黑苹果是否会成为mac电脑的竞争对手?

    最近黑科技技术大佬们都在传扬windows系统上安装mac系统,不用买mac电脑也可以使用mac一样的操作环境.什么是黑苹果?一起来看看如何在windows系统上安装mac系统. 更多专题,可关注小编 ...

  6. loadrunner / socket level data and wininet level data

    s loadrunner录制脚本时,此网站证书无效/无法录制到脚本问题解决 http://www.51testing.com/html/64/497364-3569552.html lr录制后空白_l ...

  7. 12.代理模式(Proxy Pattern)

    直接与间接:   人们对复杂的软件系统常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活.满足特定需求的解决方案.                                      ...

  8. [JUC-1]并发包实现及线程状态

    一.Java 并发包实现 二.Java 线程状态转换图

  9. Vector集合

    Vector集合也是List接口的一个实现类,但是它是同步的,这就意味着是单线程的,速度比较慢,被ArrayList集合所取代了(PS:为什么我现在也还不知道,先记录了)

  10. Silverlight界面设计

    d:DesignHeight="300" d:DesignWidth="400"> 并不会限定Grid的大小,最终的效果,还要根据Grid的大小,Grid ...