集合-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 ...
随机推荐
- getchar(),scanf(),gets(),cin,输入字符串
#include<iostream>#include<stdio.h>#include<string.h>#include<string>using n ...
- java 打印水仙花数
package cn.lijun.demo6; public class Test2 { public static void main(String[] args) { for(int i=100; ...
- linux文件或目录权限修改后如何恢复(备份了权限就能恢复)
操作系统 RHEL5 如果你在linux上执行了如下操作chmod -R 777 / 或者 chmod -R 700 /那么恭喜你,你的系统即将崩溃,重启之后,你进不了图形界面,而且很多服务都起不来 ...
- Python中表达式与语句
简述 Python中我暂时并未发现谁对着两个名词的明确定义:我对这两个名词的理解就是,表达式就是你想要执行的对象,语句就是你的具体执行操作. 这里应用慕课网老师的一段话,摘自网上"表达式(E ...
- Docker CE 各安装方法
1.Docker CE 镜像源站 使用官方安装脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2.U ...
- windows系统下mysql-8.0.13-winx64(zip安装)
一.下载地址: http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.13-winx64.zip 二.安装: 1.解压: mysql根路 ...
- twitter分布式主键id生成器
pom <!--生成id--> <dependency> <groupId>com.github.bingoohuang</groupId> <a ...
- Kafka技术内幕 读书笔记之(五) 协调者——消费者加入消费组
消费者客户端轮询的3个步骤:发送拉取请求,客户端轮询,获取拉取结果 . 消费者在发送拉取请求之前,必须首先满足下面的两个条件.- 确保消费者已经连接协调者, 即找到服务端中管理这个消费者的协调者节点 ...
- Hbase记录-hbase部署
#版本支持 #官网下载二进制包,解压到/usr/app下,配置/etc/profile: export HBASE_HOME=/usr/app/hbase export PATH=$HBASE_HOM ...
- ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag
原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...