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集合类是一个非常重要的数据结构,它可以用来实现栈和队列这两种特殊的数据结构。LinkedList是一个双链表,每个节点包含数据元素和两个引用,分别指向前后节点,这使得在列表中进行插入...
**Java Collections API**提供了多种集合类,其中`List`接口是最常用的一种,它包含两种实现方式:`ArrayList`和`LinkedList`。 - **ArrayList**:基于数组实现的List,支持随机访问,适用于需要频繁访问元素的场景...
LinkedList不仅可以作为列表使用,还可以被巧妙地利用来构建栈(Stack)和队列(Queue)这两种基本数据结构。在本篇内容中,我们将探讨如何通过LinkedList实现栈和队列,以及它们在实际编程中的应用。 首先,栈是一...
本篇文章将探讨如何利用`LinkedList`来实现队列和栈这两种数据结构,以及其背后的原理和源码分析。 ### 1. 队列(Queue) 队列是一种先进先出(FIFO, First In First Out)的数据结构。在Java中,可以使用`...
线性表是由相同类型元素按顺序排列的集合,而栈和队列的不同之处在于它们的操作方式:栈遵循"后进先出"(LIFO, Last In First Out)原则,而队列遵循"先进先出"(FIFO, First In First Out)原则。 3.1 栈 3.1.1 栈的...
LinkedList是一种以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用。它实现了List、Queue和Deque接口,使其具有多种使用场景。 LinkedList的继承体系中,它继承了AbstractSequentialList和...
这使得`LinkedList`可以被用作一个栈(通过`push`和`pop`操作)或队列(通过`offer`、`poll`、`peek`操作)。 在并发环境下,如果不使用同步控制,直接操作`LinkedList`可能会导致数据不一致。因此,如果在多线程...
LinkedList还支持作为栈(LIFO,后进先出)和队列(FIFO,先进先出)的使用,但并不推荐在需要高效随机访问的场景下使用。 四、Set接口 Set接口不允许存储重复的元素,它没有顺序性。Set接口中最常见的实现类有...
所以它可以非常方便的实现我们数据结构中的常见的Stack(栈)、queue(队列)等。LinkedList类的构造方法包括: * LinkedList 变量名 = new LinkedList() ; * LinkedList 变量名 = new LinkedList(Collection c) ; ...
`LinkedList`是Java中的一个具体类,实现了`List`接口,同时也实现了`Deque`(双端队列)接口,这意味着它支持队列和栈的操作。因此,`LinkedList`可以用作模拟队列的工具。为了模拟队列,我们可以利用它的`addLast...
LinkedList是Java集合框架中的一种双向链表,它允许在列表的任何位置进行插入和删除操作,这使得它非常适合实现堆栈和队列。 首先,堆栈是一种后进先出(LIFO,Last In First Out)的数据结构,类似于日常生活中的...
数组、链表、队列、栈数据结构特点,各自优点和缺点 在计算机科学中,数据结构是指用于组织和存储数据的方式。常见的数据结构包括数组、链表、队列、栈等。每种数据结构都有其特点、优点和缺点,本文将对这些数据...
在Java中,栈可以通过ArrayList、LinkedList等集合框架实现,也可以通过数组自行实现。 队列(Queue)是一种先进先出的数据结构,它允许在一端添加数据(入队),在另一端移除数据(出队)。队列的概念中,进行数据...
LinkedList 的这个特点使得它在某些场景下非常有用,例如实现队列或栈。 ArrayList ArrayList 是 Java 集合系列中的一种数组实现。它的主要特点是可以快速地随机访问元素,并且可以快速地插入和删除元素。...
这使得LinkedList可以作为栈或队列使用,增加了灵活性。 总结来说,LinkedList是Java集合框架中的一个重要组成部分,它的核心优势在于高效的头部和尾部操作,但对中间元素的访问则相对较低效。理解其内部结构和实现...
- **LinkedList** 提供了一些额外的方法,如`getFirst()`、`getLast()`、`removeFirst()`和`removeLast()`,这些方法可以将 **LinkedList** 当作栈或队列使用。 #### 三、选择指南 - **ArrayList** 适用于需要...
#### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,集合可以视为对数组...
LinkedList常用于构建队列(FIFO,先进先出)、栈(LIFO,后进先出)或者需要频繁插入和删除元素的场景。在需要快速访问特定位置元素或进行随机访问时,ArrayList或其他集合可能更适合。 总结来说,LinkedList是...
- 可用作队列、栈或双向队列。 - 不支持随机访问。 #### 六、ArrayList类 `ArrayList`类也是`List`接口的一种实现,它基于动态数组实现。 - **主要特点**: - 提供随机访问能力。 - 添加和删除操作的成本较高...