集合-LinkedList
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的更多相关文章
- Java 集合 LinkedList的ListIterator
Java 集合 LinkedList的ListIterator @author ixenos 摘要:ListIterator<E>是继承自Iterator<E>的接口.list ...
- 集合 LinkedList、ArrayList、Set、Treeset
LinkedList中特有的方法: 1:方法介绍 addFirst(E e) addLast(E e) getFirst() getLast() removeFirst() removeLast() ...
- jdk源码->集合->LinkedList
类的属性 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E&g ...
- java8集合--LinkedList纯源码
package Queue; import java.util.*; import java.util.function.Consumer; /** * 双端队列主要实现list接口和Deque接口, ...
- java集合LinkedList
基于jdk_1.8.0 关于List,主要是有序的可重复的数据结构.jdk主要实现类有ArrayList(底层使用数组).LinkedList(底层使用双向链表) LinkedList: (一)继承关 ...
- Java集合 LinkedList的原理及使用
Java集合 LinkedList的原理及使用 LinkedList和ArrayList一样是集合List的实现类,虽然较之ArrayList,其使用场景并不多,但同样有用到的时候,那么接下来,我们来 ...
- Java入门系列之集合LinkedList源码分析(九)
前言 上一节我们手写实现了单链表和双链表,本节我们来看看源码是如何实现的并且对比手动实现有哪些可优化的地方. LinkedList源码分析 通过上一节我们对双链表原理的讲解,同时我们对照如下图也可知道 ...
- 6.Java集合-LinkedList实现原理及源码分析
Java中LinkedList的部分源码(本文针对1.7的源码) LinkedList的基本结构 jdk1.7之后,node节点取代了 entry ,带来的变化是,将1.6中的环形结构优化为了直线型链 ...
- Java源码-集合-LinkedList
基于JDK1.8.0_191 介绍 LinkedList是以节点来保存数据的,不像数组在创建的时候需要申请一段连续的空间,LinkedList里的数据是可以存放在不同的空间当中,然后以内存地址作为 ...
- Java集合-LinkedList源码分析
目录 1.数据结构-链表 2.ArrayList结构特性 3.构造方法 4.成员变量 5.常用的成员方法 6.Node节点 7.序列化原理 8.迭代器 9.总结 1.数据结构-链表 链表(Linked ...
随机推荐
- Luogu P2852 [USACO06DEC]牛奶模式Milk Patterns
题目链接 \(Click\) \(Here\) 水题.利用\(Height\)的性质维护一个单调栈即可. #include <bits/stdc++.h> using namespace ...
- 以太网 ------ Auto-Negotiation(自动协商)
说起自动协商(Auto-negotiation),我想很多人都不会陌生.当你把你PC机器上的网卡通过一段双绞线连接到某个交换机的某个端口的时候,如果你的网卡和交换机都支持自动协商功能的话,一件有趣的事 ...
- Mac 上有哪些鲜为人知且极大提高效率的工具?
来源:知乎文章收录于:风云社区SCOEE,提供上千款各类mac软件下载 1. Focus 功能: 屏蔽影响你学习的网站. 同类软件:Self Control, Rescue Time 特点 ...
- Java基础super关键字、final关键字、static关键字、匿名对象整理
super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...
- kernel(一)编译体验
目录 打补丁 配置 总结 配置方式 配置体验 配置详解 Makefile解析 子目录的Makefile 架构下面的Makefile 顶层Makefile Make解析 编译 链接 链接脚本 烧写内核 ...
- 1.单件模式(Singleton Pattern)
创建型模式---单件模式(Singleton Pattern)动机(Motivation): 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性. ...
- mysql一张表多个字段关联另一张表查询
如下:一张订单表多个字段关联用户表: 1.链表查询 SELECT cu.id AS 'id',cu.version AS 'version',cu.cid AS 'cid',cu.uid AS 'ui ...
- Bootstrap Web框架
Bootstrap 一.简介 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML.CSS.JavaScript 开发的简洁.直观.强悍的 ...
- SpringBoot系列: SpringBoot 启动慢的问题
SpringBoot 应用启动速度往往很快, 但在某些Linux 服务器上可能会很慢, 可能超过1分钟, 有时候甚至启动不起来. 下面过程耗时太长:IdGeneratorBase: Creation ...
- Retrofit GreenDao开发中遇到的坑
持续更新中1.使用@FormUrlEncoded的话,服务端需要使用Request.Form,如果不使用@FormUrlEncoded本地需要由 @FieldMap Map<String, Ob ...