文章目录

  • 1、Deque
  • 2、Queue
  • 3、ArrayList 和 LinkedList 的区别
  • 4、练习

与ArrayList一样,LinkedList也实现了List接口,诸如add,remove,contains等等方法。

双向链表实现。链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。
按下标访问元素–get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。
插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两头的操作–add(), addFirst(),removeLast()或用iterator()上的remove()能省掉指针的移动。

LinkedList 实现了:ListDeque (双向链表结构)、Queue(队列接口)。

1、Deque

     LinkedList <xxx> ll = new LinkedList<xxx>();ll.addFirst("q0");  //头部加入ll.addLast("q1");  // 尾部加入System.out.println(ll.getFirst());   //查看最前面的对象System.out.println(ll.getLast());      //查看最后面的对象System.out.println(ll.removeFirst());    // 删除第一个对象System.out.println(ll.removeLast());   // 删除最后一个对象System.out.println(ll);  // 取出会导致对象被删除

2、Queue

Queue是在两端出入的List,所以也可以用数组或链表来实现。
队列:先进先出FIFO
offer 在最后添加元素
poll 取出第一个元素
peek 查看第一个元素
LinkedList :以双向链表实现的LinkedList既是List,也是Queue。它是唯一一个允许放入null的Queue。
Queue<Hero> q= new LinkedList<Hero>();

还有很多Quene,比如ArrayDequePriorityQueue。。。

3、ArrayList 和 LinkedList 的区别

ArrayList

  1. 插入/删除数据速度慢。因为要把插入点后所有对象移位。
  2. 顺序结构,可直接定位到某个位置的对象,定位速度快。

LinkedList

  1. 插入,删除数据快。只要断开插入点的连接,重新连接到别的块就OK。
  2. 链表结构,不可以直接定位到某个位置的对象,必须根据链表的方向一个一个找,定位速度慢。
public class TestCollection {public static void main(String[] args) {List<Integer> l1 = new ArrayList<>();List<Integer> l2 = new LinkedList<>();insertFirst(l1,"ArrayList");insertFirst(l2,"LinkedList");        }private static void insertFirst(List<Integer> l, String type) {int total = 1000 * 100;final int number = 5;long start = System.currentTimeMillis();for (int i = 0; i < total; i++) {l.add(0, number);}long end = System.currentTimeMillis();System.out.printf("在%s 最前面插入%d条数据,总共耗时 %d 毫秒 %n", type, total, end - start);}
}

在ArrayList 最前面插入100000条数据,总共耗时 1006 毫秒
在LinkedList 最前面插入100000条数据,总共耗时 4 毫秒

4、练习

练习-使用LinkedList实现Stack栈
与FIFO(先入先出的)队列类似的一种数据结构是FILO先入后出栈Stack
根据接口Stack :
实现类:MyStack
public class MyStack implements Stack
并向这个栈中,压入5个英雄,接着弹出5个英雄
package collection;
import charactor.Hero;
public interface Stack {
//把英雄推入到最后位置
public void push(Hero h);
//把最后一个英雄取出来
public Hero pull();
//查看最后一个英雄
public Hero peek();
}

package collection;import java.util.LinkedList;
import java.util.List;public class MyStack implements Stack{LinkedList<Hero> heros = new LinkedList<>();@Override  //把英雄推入到最后位置public void push(Hero h) {heros.addLast(h);}@Overridepublic Hero pull() {// TODO Auto-generated method stubHero h = heros.removeLast();return h;}@Overridepublic Hero peek() {// TODO Auto-generated method stubHero h = heros.getLast();return h;}
}

转载于:https://www.cnblogs.com/l20902/p/10610877.html

java基础:13.2 集合框架 - LinkedList、Queue相关推荐

  1. 【JAVA基础篇】集合框架

    一.集合框架图 Java集合框架主要包含两种类型的容器,一是集合(Collection),存储元素集合,二是图(Map),存储键(key)-值(value)对.Collection接口下面有两个重要的 ...

  2. Java基础知识第二讲:Java开发手册/JVM/集合框架/异常体系/Java反射/语法知识/Java IO

    Java基础知识第二讲(Java编程规范/JVM/集合框架/异常体系/Java反射/语法知识/Java IO/码出高效) 分享在java学习及工作中,常使用的一些基础知识,本文从JVM出发,讲解了JV ...

  3. JAVA语言基础-面向对象(集合框架02List、泛型)

    2019独角兽企业重金招聘Python工程师标准>>> 16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字 ...

  4. 明翰Java教学系列之集合框架篇V0.2(持续更新)

    文章目录 传送门 前言 什么是集合框架 集合框架体系 Collection接口 `Set接口` `HashSet` LinkedHashSet TreeSet EnumSet Queue接口 Prio ...

  5. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  6. Java 基础面试之集合

    Java 基础面试之集合 1.Collection接口 的实现类 答:Collection接口有3个子接口:List.Set.Queue a.List(有序.可重复):的实现类有ArrayList.V ...

  7. java基础入门-04-【集合学生管理系统】

    Java基础入门-04-[集合&学生管理系统] 11.集合&学生管理系统 11.1.ArrayList 集合和数组的优势对比: 11.1.1 ArrayList类概述 11.1.2 A ...

  8. java基础:13.1 集合框架 - ArrayList

    文章目录 1.ArrayList 2.特点 3.和数组的区别 4.常用的方法 5.使用泛型与不使用泛型 6.遍历 7.练习 1.ArrayList 在 java基础:6.0 ArrayList 中,初 ...

  9. Java核心技术点之集合框架

    1. 概述     Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...

最新文章

  1. 正向最大匹配 和逆向最大匹配对比比较
  2. php开发 linux作用是什么,linux有什么用?
  3. 移动医疗未来还有多少红利?
  4. java nio 强制关闭_Java NIO服务器:远程主机强迫关闭了一个现有的连接
  5. 程序员找 Bug 福音!微软全新开源查找修复 Bug 工具——Project OneFuzz
  6. pandas之combine_first() 合并重叠数据(修补)
  7. Java基础面试题集(二)
  8. r软件官方下载 linux,r语言下载安装
  9. Linux用户管理 (实验2)
  10. PostgreSQL数据类型(中文手册)
  11. 论坛贴吧图片IP签名档源码
  12. 关于期权池Option Pools与Vesting:码农创业防身必备法器
  13. 数据库问题——合并表格
  14. 服务器固态硬盘接口区别,s s d固态硬盘和服务器配件硬盘的区别
  15. http报文格式简介
  16. 关于 DWave dimod 使用详解
  17. win10安装msi文件
  18. c语言的所有头文件,C语言所有头文件.doc
  19. MySQL5.7 Attempted to use a closed or broken resource pool 处理过程
  20. 如何找到一个网站的icon

热门文章

  1. linux导出日志命令_Linux中的导出命令
  2. mongodb卸载_如何在Windows上安装MongoDB,启动,卸载
  3. python设置环境变量_Python设置环境变量
  4. 字符串startswith_Python字符串startswith()
  5. 产品经理该如何做竞品分析
  6. Java新职篇:声明一个变量
  7. C++实现整数值转中文大写
  8. Apache Spark机器学习3.3 特征准备
  9. MongoDB聚合(二)
  10. 程序员面试金典——11.3元素查找