Java集合框架之LinkedList-----用LinkedList模拟队列和堆栈

LinkedList的特有方法:

(一)添加方法

addFisrt(E e):将指定元素插入此列表的开头。//参数e可以理解成Object对象,因为列表可以接收任何类型的对象,所以e就是Object对象(传递过程即向上转型)。

addLast(E e):将指定元素插入此列表的结尾。

JDK1.6之后:

offerFirst();

offerLast();//其实前后的用法相同,换了一个名字而已。

(二):获取元素方法(获取过程不删除链表元素):

getFirst();返回此列表的第一个元素。如果链表为空,则抛出NoSuchElementException异常。

getLast();返回此列表的最后一个元素。

JDK1.6之后:

peekFirst();获取链表的第一个元素,如果链表为空则会返回null。

peekLast();

(三):获取元素方法(获取过程删除链表元素):

removeFirst();获取链表的第一个元素,并在链表中删除该元素,如果链表为空则抛出NoSuchElementException异常.

removeLast();

JDK1.6之后:

pollFirst();获取链表的第一个元素,并在链表中删除该元素,如果链表为空则返回null.

pollLast();

具体代码实现:

 1 package collection;
 2 /*
 3  * 用LinkedList模拟队列这一数据结构
 4  */
 5 import java.util.LinkedList;
 6
 7 class Queue{//创建一个容器,对外提供可以使用容器的对象(调用容器中封装的方法)
 8     private LinkedList link;
 9     public Queue(){
10         link=new LinkedList();
11     }
12     public void myAdd(Object obj){
13         link.offerLast((obj));
14     }
15     public Object myGet(){
16         return link.pollFirst();
17     }
18     public boolean isNull(){
19         return link.isEmpty();
20     }
21 }
22 public class LinkedListTest {
23
24     /**
25      * @param args
26      */
27     public static void main(String[] args) {
28
29         Queue dl=new Queue();
30         dl.myAdd("abc0");
31         dl.myAdd("abc1");
32         dl.myAdd("abc2");
33         dl.myAdd("abc3");
34         while(!dl.isNull()){
35         System.out.println(dl.myGet());
36         }
37     }
38
39 }

总结上面的代码:对外提供容器对象,容器中封装的方法可以实现队列先进先出(FIFO)的需求,调整其中封装的方法,同样可以实现堆栈先进后出这一种数据结构(FILO)。

package collection;
/*
 * 用LinkedList模拟队列这一数据结构
 */
import java.util.LinkedList;

class Queue{          //创建一个容器,对外提供可以使用容器的对象(调用容器中封装的方法)
    private LinkedList link;
    public Queue(){
        link=new LinkedList();
    }
    public void myAdd(Object obj){
        link.offerLast((obj));
    }
    public Object myGet(){
        return link.pollFirst();
    }
    public boolean isNull(){
        return link.isEmpty();
    }
}
public class LinkedListTest {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Queue dl=new Queue();
        dl.myAdd("abc0");
        dl.myAdd("abc1");
        dl.myAdd("abc2");
        dl.myAdd("abc3");
        while(!dl.isNull()){
        System.out.println(dl.myGet());
        }
    }

}
时间: 2024-07-31 20:34:22

Java集合框架之LinkedList-----用LinkedList模拟队列和堆栈的相关文章

Java集合框架之二:LinkedList源码解析

版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! LinkedList底层是通过双向循环链表来实现的,其结构如下图所示: 链表的组成元素我们称之为节点,节点由三部分组成:前一个节点的引用地址.数据.后一个节点的引用地址.LinkedList的Head节点不包含数据,每一个节点对应一个Entry对象.下面我们通过源码来分析LinkedList的实现原理. 1.Entry类源码: 1 private static class Entry<E> { 2 E element; 3 Entr

Java 集合框架(二)—— LinkedList

三.链表 —— LinkedList ArrayList 虽然好用,但是数组和数组列表都有一个重大的缺陷:从数组的中间位置删除一个元素要付出很大的代价,其原因是数组中处于被删除元素之后的所有元素都要向数组的前端移动.但是,具有链表结构的 LinkedList 则没有这个问题. LinkedList 的底层结构是类似数据结构里边的双向链表,可以代价比较小地实现元素的增加和删除. LinkedList 有一个如上图的内部类,这个类就是实现了双向链表的功能. 1.构造方法 LinkedList() C

Java 集合框架(五):阻塞队列

阻塞队列 如果我们想要在线程安全的场景下使用队列,只有两个选择,一个是上面讲过的 ConcurrentLinkedQueue,还有就是我们要将的阻塞队列. 从名字我们就可以判断出阻塞队列适用的场景,那就是生产者消费者模式.阻塞对垒的添加和删除操作在队列满或者空的时候会被阻塞.这就保证了线程安全. 阻塞队列提供了四种处理方法: 方法 抛异常 返回特殊值 一直阻塞 超时退出 插入 add(E e) offer(e) put(e) offer(e,time,unit) 删除 remove() poll

Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

【Java集合源码剖析】LinkedList源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/35787253 LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全的,只在单线程下适合使用. LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆. Linked

Java集合详解2:LinkedList和Queue

Java集合详解2:LinkedList和Queue 今天我们来探索一下LinkedList和Queue,以及Stack的源码. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https://h2pl.github.io/2018/05/09/collection2 更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a724888 我的个

Java集合框架总结(4)——List接口的使用

Java集合框架总结(4)--List接口的使用 List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引.List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素. 1.List接口和ListIterator接口 List作为Collection接口的子接口,可以使用Collection接口里的全部方法.List是有序集合,所以List集合里增加了一些根据索引来操作集合元素的方法: void add(int index, Object element):将元素element插

浅入深出之Java集合框架(上)

Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架(下)>. 目录: 浅入深出之Java集合框架(上) 浅入深出之Java集合框架(中)   努力赶制中..关注后更新会提醒哦! 浅入深出之Java集合框架(下) 努力赶制中..关注后更新会提醒哦! 一.集合概述 1)集合的概念 现实生活中的集合:很多事物凑在一起. 数学中的集合:具有共同属性的事物的总体

JavaSE入门学习33:Java集合框架概述

一集合框架 (1)集合的概念 现实生活中的集合:很多的事物凑在一起. 数学中的集合:具有共同属性的事物的总体. Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象. (2)集合框架的概念 有了集合的概念,什么是集合框架呢?集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何 集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算法. 1接口:即表示集合的抽象数据类型.接口提供了让我们对集合中所表示的内容进行单独操作的可能.接口允许 集合独立操纵其

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度