`
schy_hqh
  • 浏览: 558704 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(集合)LInkedList---队列与栈

 
阅读更多

 

LinkedList提供了addFirst(),addLast(),removeFirst()方法操作集合中的元素

基于这些功能,就可以实现队列与栈的数据结构。

 

队列---先进先出FIFO

 

 

import java.util.Collection;
import java.util.LinkedList;


public class Queue<E> {
	private LinkedList<E> link;
	
	Queue() {
		link = new LinkedList<E>();
	}
	
	public void add(E e) {
		link.addLast(e);
	}
	
	public void addAll(Collection<? extends E> coll) {
		link.addAll(coll);
	}
	
	public E getNext() {
		return link.removeFirst();
	}
	
	public boolean isEmpty() {
		return link.isEmpty();
	}
}

 

 

	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		list.add("123");
		list.add("abc");
		list.add("000");
		
		printQueue(list);
		
	}



	private static void printQueue(List<String> list) {
		Queue<String> queue = new Queue<String>();
		queue.add("------------");
		queue.addAll(list);
		queue.add("$$$$$$$$$$$$");
		
		while(!queue.isEmpty()) {
			System.out.println(queue.getNext());
		}
	}

 结果

------------
123
abc
000
$$$$$$$$$$$$

 

 

栈---后进先出FILO

 

import java.util.Collection;
import java.util.LinkedList;


public class Stack<E> {
	private LinkedList<E> link;
	
	public Stack() {
		link = new LinkedList<E>();
	}
	
	public void add(E e) {
		link.addFirst(e);
	}

	public void addAll(Collection<? extends E> coll) {
		Object[] elements = coll.toArray();
		int size = elements.length;
		for(int index=size-1;index>=0;index--)
			add((E)elements[index]);
	}
	
	public E getNext() {
		return link.removeFirst();
	}
	
	public boolean isEmpty() {
		return link.isEmpty();
	}
}

 

	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		list.add("123");
		list.add("abc");
		list.add("000");
		
		printStack(list);
		
	}

	public static void printStack(List<String> list) {
		Stack<String> stack = new Stack<String>();
		stack.add("------------");
		stack.addAll(list);
		stack.add("$$$$$$$$$$$$");
		while(!stack.isEmpty()) {
			System.out.println(stack.getNext());
		}
	}

 结果

$$$$$$$$$$$$
123
abc
000
------------

 

分享到:
评论

相关推荐

    java中LinkedList集合类实现栈和队列.doc

    在Java编程语言中,LinkedList集合类是一个非常重要的数据结构,它可以用来实现栈和队列这两种特殊的数据结构。LinkedList是一个双链表,每个节点包含数据元素和两个引用,分别指向前后节点,这使得在列表中进行插入...

    数据结构--表、栈、队列(java)

    **Java Collections API**提供了多种集合类,其中`List`接口是最常用的一种,它包含两种实现方式:`ArrayList`和`LinkedList`。 - **ArrayList**:基于数组实现的List,支持随机访问,适用于需要频繁访问元素的场景...

    JAVA利用LinkedList构造栈与队列

    LinkedList不仅可以作为列表使用,还可以被巧妙地利用来构建栈(Stack)和队列(Queue)这两种基本数据结构。在本篇内容中,我们将探讨如何通过LinkedList实现栈和队列,以及它们在实际编程中的应用。 首先,栈是一...

    用LinkedList实现队列和栈

    本篇文章将探讨如何利用`LinkedList`来实现队列和栈这两种数据结构,以及其背后的原理和源码分析。 ### 1. 队列(Queue) 队列是一种先进先出(FIFO, First In First Out)的数据结构。在Java中,可以使用`...

    java零基础自学之栈和队列

    线性表是由相同类型元素按顺序排列的集合,而栈和队列的不同之处在于它们的操作方式:栈遵循"后进先出"(LIFO, Last In First Out)原则,而队列遵循"先进先出"(FIFO, First In First Out)原则。 3.1 栈 3.1.1 栈的...

    【死磕Java集合】-集合源码分析.pdf

    LinkedList是一种以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用。它实现了List、Queue和Deque接口,使其具有多种使用场景。 LinkedList的继承体系中,它继承了AbstractSequentialList和...

    javalist源码-LinkedList-in-Java:链表的Java源代码实现

    这使得`LinkedList`可以被用作一个栈(通过`push`和`pop`操作)或队列(通过`offer`、`poll`、`peek`操作)。 在并发环境下,如果不使用同步控制,直接操作`LinkedList`可能会导致数据不一致。因此,如果在多线程...

    Java-Java集合体系-List-Set

    LinkedList还支持作为栈(LIFO,后进先出)和队列(FIFO,先进先出)的使用,但并不推荐在需要高效随机访问的场景下使用。 四、Set接口 Set接口不允许存储重复的元素,它没有顺序性。Set接口中最常见的实现类有...

    JSP应用开发-Java集合类-List接口.pptx

    所以它可以非常方便的实现我们数据结构中的常见的Stack(栈)、queue(队列)等。LinkedList类的构造方法包括: * LinkedList 变量名 = new LinkedList() ; * LinkedList 变量名 = new LinkedList(Collection c) ; ...

    解析Java中的队列和用LinkedList集合模拟队列的方法

    `LinkedList`是Java中的一个具体类,实现了`List`接口,同时也实现了`Deque`(双端队列)接口,这意味着它支持队列和栈的操作。因此,`LinkedList`可以用作模拟队列的工具。为了模拟队列,我们可以利用它的`addLast...

    LinkedList学习示例模拟堆栈与队列数据结构

    LinkedList是Java集合框架中的一种双向链表,它允许在列表的任何位置进行插入和删除操作,这使得它非常适合实现堆栈和队列。 首先,堆栈是一种后进先出(LIFO,Last In First Out)的数据结构,类似于日常生活中的...

    数组、链表、队列、栈数据结构特点,各自优点和缺点 数组和链表.pdf

    数组、链表、队列、栈数据结构特点,各自优点和缺点 在计算机科学中,数据结构是指用于组织和存储数据的方式。常见的数据结构包括数组、链表、队列、栈等。每种数据结构都有其特点、优点和缺点,本文将对这些数据...

    14.栈和队列.pdf

    在Java中,栈可以通过ArrayList、LinkedList等集合框架实现,也可以通过数组自行实现。 队列(Queue)是一种先进先出的数据结构,它允许在一端添加数据(入队),在另一端移除数据(出队)。队列的概念中,进行数据...

    Java集合系列(LinkedHashMap+LinkedList+ArrayList)

    LinkedList 的这个特点使得它在某些场景下非常有用,例如实现队列或栈。 ArrayList ArrayList 是 Java 集合系列中的一种数组实现。它的主要特点是可以快速地随机访问元素,并且可以快速地插入和删除元素。...

    java软件技术文档-深入java8的集合2:LinkedList的实现原理.pdf

    这使得LinkedList可以作为栈或队列使用,增加了灵活性。 总结来说,LinkedList是Java集合框架中的一个重要组成部分,它的核心优势在于高效的头部和尾部操作,但对中间元素的访问则相对较低效。理解其内部结构和实现...

    ArrayList Vector LinkedList 区别与用法.

    - **LinkedList** 提供了一些额外的方法,如`getFirst()`、`getLast()`、`removeFirst()`和`removeLast()`,这些方法可以将 **LinkedList** 当作栈或队列使用。 #### 三、选择指南 - **ArrayList** 适用于需要...

    java集合小结

    #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,集合可以视为对数组...

    Jdk1.6 Collections Framework源码解析(2)-LinkedList

    LinkedList常用于构建队列(FIFO,先进先出)、栈(LIFO,后进先出)或者需要频繁插入和删除元素的场景。在需要快速访问特定位置元素或进行随机访问时,ArrayList或其他集合可能更适合。 总结来说,LinkedList是...

    Java集合类性能分析

    - 可用作队列、栈或双向队列。 - 不支持随机访问。 #### 六、ArrayList类 `ArrayList`类也是`List`接口的一种实现,它基于动态数组实现。 - **主要特点**: - 提供随机访问能力。 - 添加和删除操作的成本较高...

Global site tag (gtag.js) - Google Analytics