集合-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 ...
随机推荐
- POJ 3522 Slim Span(极差最小生成树)
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9546 Accepted: 5076 Descrip ...
- Elastic 安装篇(1)
1.Elasticsearch下载安装 https://www.elastic.co/cn/downloads/elasticsearch 解压: 2.安装head https://github.co ...
- (二叉树 BFS) leetcode513. Find Bottom Left Tree Value
Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...
- java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)
前面学习ByteArrayInputStream,了解了“输入流”.接下来,我们学习与ByteArrayInputStream相对应的输出流,即ByteArrayOutputStream.本章,我们会 ...
- JAVA核心技术I---JAVA基础知识(文本文件读写)
一:java IO包概述 (一)Java读写文件,只能以(数据)流的形式进行读写 (二)java IO 包 –节点类:直接对文件进行读写 –包装类 • 转化类:字节/字符/数据类型的转化类 • 装饰类 ...
- LInux Zebra
本文章摘自linux公社 https://www.linuxidc.com/Linux/2015-07/120224p1.htm 写在前面 从22号中午开始琢磨zebra/quagga的用法,一直 ...
- 基于CentOS6.8版本配置真实域名的方法
前言:审核了15天的时间终于审核下来了,但是结果发现配置域名掉坑了,记录一下 (一)首先配置域名三步走 1.先到域名商网站解析你你的域名(我的是百度云) 2.接着修改linux的host指向 例如: ...
- linux 精简开机自启动
centos7 精简开机自启动 ntsysv rsyslog crond sshd network
- MyEclipse做的项目改成eclipse能用的
转至:https://blog.csdn.net/cymlancy/article/details/67634531 首先导入一个从Myeclipse导出的项目 Myeclipse项目和Eclipse ...
- linux常用命令说明
1. 基础快捷键使用 ctrl + c:停止进程 ctrl + l:清屏 ctrl + r:搜索历史命令 ctrl + q:退出 2.常用目录或文件夹命令 说明:安装linux时,创建一个itcast ...