使用linkedlist封装简单的先进先出队列

创建一个类Queue代表队列(先进先出),添加add(Object obj) 及get()方法, 并添加main()方法进行验证 思路: 使用LinkedList实现队列,在向LinkedList中添加时,使用addFirst()方法, 在从LinkedLsit中取出时,使用removeLast()方法

 1 package com.lch.book3chapter1.exercise4;
 2
 3 import java.util.LinkedList;
 4
 5
 6 public class QueueTest {
 7
 8
 9     public static void main(String[] args) {
10         Student stu1 = new Student("李磊", 90);
11         Student stu2 = new Student("韩梅", 96);
12         Student stu3 = new Student("李中", 79);
13
14         Queue<Student> q = new Queue<Student>();
15         q.add(stu1);
16         q.add(stu2);
17         q.add(stu3);
18         for (int i = 0; i < q.size(); i++) {
19             Student s = q.get();
20             System.out.println(s.getName() + "-" + s.getScore());
21         }
22     }
23
24 }
25
26 class Queue<T> {
27     private LinkedList<T> list = null;
28     int count = 0;
29
30     public Queue() {
31         list = new LinkedList<T>();
32     }
33
34     public T get() {
35         T obj = null;
36         if (!list.isEmpty()) {
37             // 第一个添加的元素在队列的尾部
38             obj = list.removeLast(); // 删除并返回列表的最后一个元素(第一个被添加的元素)
39         }
40         return obj;
41         // return list.getLast(); //没有删除操作,获取到的永远是最后一个
42     }
43
44     public void add(T obj) {
45         list.addFirst(obj);
46         this.count++;
47     }
48
49     public int size() {
50         return count;
51     }
52 }
53
54 class Student {
55     private String name;
56     private int score;
57
58     public Student(String name, int score) {
59         super();
60         this.name = name;
61         this.score = score;
62     }
63
64     public String getName() {
65         return name;
66     }
67
68     public void setName(String name) {
69         this.name = name;
70     }
71
72     public int getScore() {
73         return score;
74     }
75
76     public void setScore(int score) {
77         this.score = score;
78     }
79
80     @Override
81     public String toString() {
82         return "Student [name=" + name + ", score=" + score + "]";
83     }
84
85
86 }

打印结果

原文地址:https://www.cnblogs.com/enjoyjava/p/9321166.html

时间: 2024-10-13 12:10:21

使用linkedlist封装简单的先进先出队列的相关文章

计算机程序的思维逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列

本节介绍内存映射文件,内存映射文件不是Java引入的概念,而是操作系统提供的一种功能,大部分操作系统都支持. 我们先来介绍内存映射文件的基本概念,它是什么,能解决什么问题,然后我们介绍如何在Java中使用,我们会设计和实现一个简单的.持久化的.跨程序的消息队列来演示内存映射文件的应用. 基本概念 所谓内存映射文件,就是将文件映射到内存,文件对应于内存中的一个字节数组,对文件的操作变为对这个字节数组的操作,而字节数组的操作直接映射到文件上.这种映射可以是映射文件全部区域,也可以是只映射一部分区域.

用LinkedList模拟一个堆栈或者队列数据结构 总结: LinkedList知识点

/** 用LinkedList模拟一个堆栈或者队列数据结构. 创建一个堆栈和队列数据结构对象,该对象中使用LinkedList来完成的. 知识点总结: 1.LinkedList特点:链表式数据结构. 重复有序,查询速度慢,增删速度快.不同步的. 2.LinkedList除了实现List接口增删改查的功能外,有一些特有的方法,能够实现在List(列表)的开头和结尾 插入,删除,获取等特有功能.这就是为什么LinkedList能够模拟一个堆栈,或者队列,双端队列的数据结构了. 涉及知识点: 1.什么

使用LinkedList模拟一个堆栈或者队列数据结构

使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public class DuiLie { private LinkedList link; public DuiLie() { link = new LinkedList(); } public void myAdd(Object obj) { link.addFirst(obj); } public Object

Java LinkedList特有方法程序小解 &amp;&amp; 使用LinkedList 模拟一个堆栈或者队列数据结构。

package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst()/getLast(); removeFirst()/removeLast(); 若链表为空,抛出 没有这个元素异常/NoSuchElementException 但是 JDK1.6 版本以后出现了替代方法: offerFirst()/offerLast(); peekFirst()/peekLas

Lua 下实现一个简单的消息队列

Lua 下实现一个简单的消息队列,如下简单的几条代码就可以了. local q1 = {} local q2 = {} -- 产生消息只需要 table.insert(q1, msg) -- 分发消息需要两层循环, 可以处理 dispatch 过程中产生的新消息 while q1[1] do q1,q2 = q2,q1 for i=1,#q2 do dispatch(q2[i]) q2[i] = nil end end

简单的动画队列模型

给新手写了一个便于理解的动画链式 var anmin = {} anmin.list = []; anmin.run = function(nextfun){ anmin.list.push(nextfun); //加入动画正在触发 (function fire() { if (!anmin.fireing) { var onceRun = anmin.list.shift() if (onceRun) { anmin.fireing = true; onceRun(function() { a

创建和订阅简单的观察队列

你没有必要自己手动实现Iobservable<T>接口来创建观察队列,同样的,你也没有必要实现Iobserver<T>接口来订阅这个队列.通过安装RX库,RX提供请多静态的方法来创建带有一个参数或多个或没有参数的简单队列.你可以很方便的使用这些静态方法.另外,RX还提供了订阅扩展方法来实现多种多样的OnNext,OnError,OnCompleted句柄委托.创建和订阅简单的观察队列下面的例子使用观察者类型的范围操作来创建简单的观察集合,通过Observable类订阅方法来订阅这个

简单数据结构之队列模拟

1 /************************************************************************************** 2 * Function : 模拟队列 3 * Create Date : 2014/04/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性. 7 * 任何单位和个人不经本人允许不

简单的js队列

简单的js队列 /** * [Queue] * @param {[Int]} size [队列大小] */ function Queue(size) { var list = []; //向队列中添加数据 this.push = function(data) { if (data==null) { return false; } //如果传递了size参数就设置了队列的大小 if (size != null && !isNaN(size)) { if (list.length == siz