栈:后进先出。

队列:先进先出。

利用这个核心思想,结合集合的add和remove方法做的栈和队列如下代码所示:

主类(t1()和t2()分别演栈和队列):

  1.  
    package cn.hncu.mySet2;
  2.  
     
  3.  
    import java.util.Iterator;
  4.  
     
  5.  
    import cn.hncu.set.Person;
  6.  
     
  7.  
    public class TestDemo {
  8.  
    public static void main(String[] args) {
  9.  
    t1();
  10.  
    // t2();
  11.  
     
  12.  
     
  13.  
    }
  14.  
     
  15.  
    private static void t1() {
  16.  
    Person p1=new Person("01", "张三", 20);
  17.  
    Person p2=new Person("02", "李四", 21);
  18.  
    Person p3=new Person("03", "王五", 22);
  19.  
    Person p4=new Person("04", "mis", 17);
  20.  
     
  21.  
    MyStack stack=new MyStack();
  22.  
    stack.in(p1);
  23.  
    stack.in(p2);
  24.  
    stack.in(p3);
  25.  
     
  26.  
    System.out.println(stack.out());
  27.  
    System.out.println(stack.out());
  28.  
    System.out.println(stack.out());
  29.  
    System.out.println(stack.out());
  30.  
    System.out.println(stack.out());
  31.  
    }
  32.  
    private static void t2() {
  33.  
    Person p1=new Person("01", "张三", 20);
  34.  
    Person p2=new Person("02", "李四", 21);
  35.  
    Person p3=new Person("03", "王五", 22);
  36.  
    Person p4=new Person("04", "mis", 17);
  37.  
    MyQueue queue=new MyQueue();
  38.  
    queue.in(p1);
  39.  
    queue.in(p2);
  40.  
    queue.in(p3);
  41.  
    queue.in(p4);
  42.  
    System.out.println(queue.out());
  43.  
    System.out.println(queue.out());
  44.  
    System.out.println(queue.out());
  45.  
    System.out.println(queue.out());
  46.  
    System.out.println(queue.out());
  47.  
     
  48.  
    }
  49.  
     
  50.  
    }

栈类:

  1.  
    package cn.hncu.mySet2;
  2.  
     
  3.  
    import java.util.ArrayList;
  4.  
    import java.util.HashMap;
  5.  
    import java.util.HashSet;
  6.  
    import java.util.LinkedList;
  7.  
    import java.util.List;
  8.  
    import java.util.Set;
  9.  
    import java.util.Stack;
  10.  
     
  11.  
    public class MyStack {
  12.  
    private LinkedList mystack=new LinkedList();
  13.  
    public void in(Object obj){
  14.  
    mystack.add(obj);
  15.  
    }
  16.  
    public Object out(){
  17.  
    if(mystack.isEmpty()){
  18.  
    return null;
  19.  
    }
  20.  
    return mystack.removeLast();
  21.  
    }
  22.  
     
  23.  
    public boolean isEmpty(){
  24.  
    return mystack.isEmpty()?true:false;
  25.  
    }
  26.  
     
  27.  
    }

队列类:

  1.  
    package cn.hncu.mySet2;
  2.  
     
  3.  
    import java.util.LinkedList;
  4.  
     
  5.  
    public class MyQueue {
  6.  
    private LinkedList list=new LinkedList();
  7.  
    public void in(Object obj){
  8.  
    list.add(obj);
  9.  
    }
  10.  
     
  11.  
    public Object out(){
  12.  
    if(list.isEmpty()){
  13.  
    return null;
  14.  
    }
  15.  
    return list.remove(0);
  16.  
    }
  17.  
    public boolean isEmpty(){
  18.  
    return list.isEmpty()?true:false;
  19.  
    }
  20.  
    }

person类:

  1.  
    package cn.hncu.mySet2;
  2.  
     
  3.  
    public class Person {
  4.  
    private String Sno;
  5.  
    private String name;
  6.  
    private int age;
  7.  
    public Person(String sno, String name, int age) {
  8.  
    super();
  9.  
    Sno = sno;
  10.  
    this.name = name;
  11.  
    this.age = age;
  12.  
    }
  13.  
    public String getSno() {
  14.  
    return Sno;
  15.  
    }
  16.  
    public void setSno(String sno) {
  17.  
    Sno = sno;
  18.  
    }
  19.  
    public String getName() {
  20.  
    return name;
  21.  
    }
  22.  
    public void setName(String name) {
  23.  
    this.name = name;
  24.  
    }
  25.  
    public int getAge() {
  26.  
    return age;
  27.  
    }
  28.  
    public void setAge(int age) {
  29.  
    this.age = age;
  30.  
    }
  31.  
    @Override
  32.  
    public String toString() {
  33.  
    return "Person [Sno=" + Sno + ", name=" + name + ", age=" + age + "]";
  34.  
    }
  35.  
    @Override
  36.  
    public int hashCode() {
  37.  
    final int prime = 31;
  38.  
    int result = 1;
  39.  
    result = prime * result + ((Sno == null) ? 0 : Sno.hashCode());
  40.  
    result = prime * result + age;
  41.  
    result = prime * result + ((name == null) ? 0 : name.hashCode());
  42.  
    return result;
  43.  
    }
  44.  
    @Override
  45.  
    public boolean equals(Object obj) {
  46.  
    if (this == obj)
  47.  
    return true;
  48.  
    if (obj == null)
  49.  
    return false;
  50.  
    if (getClass() != obj.getClass())
  51.  
    return false;
  52.  
    Person other = (Person) obj;
  53.  
    if (Sno == null) {
  54.  
    if (other.Sno != null)
  55.  
    return false;
  56.  
    } else if (!Sno.equals(other.Sno))
  57.  
    return false;
  58.  
    if (age != other.age)
  59.  
    return false;
  60.  
    if (name == null) {
  61.  
    if (other.name != null)
  62.  
    return false;
  63.  
    } else if (!name.equals(other.name))
  64.  
    return false;
  65.  
    return true;
  66.  
    }
  67.  
     
  68.  
    }

集合第七发练习之利用ArrayList做栈、队列的更多相关文章

  1. C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加

    class Card { private string name; public string Name { get { return name; } set { name = value; } } ...

  2. Java集合源码分析(一)ArrayList

    前言 在前面的学习集合中只是介绍了集合的相关用法,我们想要更深入的去了解集合那就要通过我们去分析它的源码来了解它.希望对集合有一个更进一步的理解! 既然是看源码那我们要怎么看一个类的源码呢?这里我推荐 ...

  3. Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

    概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...

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

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  5. Java集合框架(三)—— List、ArrayList、Vector、Stack

    List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...

  6. JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用

    JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...

  7. 【转】Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  8. Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)

    Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...

  9. Java小白集合源码的学习系列:ArrayList

    ArrayList源码学习 本文基于JDK1.8版本,对集合中的巨头ArrayList做一定的源码学习,将会参考大量资料,在文章后面都将会给出参考文章链接,本文用以巩固学习知识. ArrayList的 ...

随机推荐

  1. POJ 3041 Asteroids (二分图匹配)

    [题目链接] http://poj.org/problem?id=3041 [题目大意] 一个棋盘上放着一些棋子 每次操作可以拿走一行上所有的棋子或者一列上所有的棋子 问几次操作可以拿完所有的棋子 [ ...

  2. [TopCoder8600]MagicFingerprint

    题目大意: 定义magic(x)为将x按十进制顺序写下来,依次对相邻两个数写下差的绝对值,并去除前导0得到的新数. 若对得到的magic(x)重复进行多次magic,最后会变成一个一位数. 若最后变成 ...

  3. 线程同步工具之CountDownLatch

    CountDownLatch,一个同步辅助类,在完成一组其他线程汇总执行的操作前,它允许一个或多个线程一直等待 主要方法:      public CountDownLatch(int count); ...

  4. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

  5. Delphi制作QQ自动登录器源码

    Delphi制作QQ自动登录器源码  http://www.cnblogs.com/sunsoft/archive/2011/02/25/1964967.html 以TM2009为例,检查了一下,未登 ...

  6. What is Mocking?

    Mocking is primarily used in unit testing. An object under test may have dependencies on other (comp ...

  7. IntelliJ IDEA 配合 Maven 的一些技巧:Profiles

    环境 IntelliJ IDEA 2017.1 Maven 3.3.9 Nexus 3.2.1 学习前提 了解 Maven 配置的基本用法 了解私有仓库,比如 nexus 的一些概念 强烈建议把 Ma ...

  8. GTK+重拾--09 GTK+中的组件(一)

    (一):写在前面 在这篇文章中主要介绍了GTK+程序中的各种构件,这是解说构件的第一个部分,另外一部分将在下一个小节中讲到. 构件是建立一个GUI程序的基础.在GTK+的长期发展过程中.一些特定的构件 ...

  9. C# 下利用ICSharpCode.SharpZipLib.dll实现文件/目录压缩、解压缩

    ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定文件夹下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩 ...

  10. YOLO 测试出错:段错误 (核心已转储)

    段错误 (核心已转储): data/voc.names中文标签改成英文