栈:后进先出。

队列:先进先出。

利用这个核心思想,结合集合的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. SPOJ705 SUBST1 - New Distinct Substrings(后缀数组)

    给一个字符串求有多少个不相同子串. 每一个子串一定都是某一个后缀的前缀.由此可以推断出总共有(1+n)*n/2个子串,那么下面的任务就是找这些子串中重复的子串. 在后缀数组中后缀都是排完序的,从sa[ ...

  2. 四. Java继承和多态5. instanceof 运算符

    多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 . C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符. insta ...

  3. 集合框架(中):Map

    Map接口: Map提供了一种映射关系,其中的元素就是以键值对(key-value)的形式存储的,能够实现根据key快速查找value Map中的键值对以Entry类型的对象实例形式存在 键(key值 ...

  4. linux-系统资源查看-动态

    1.top 2.sar http://blog.csdn.net/hguisu/article/details/7493661  很重要 http://blog.itpub.net/24435147/ ...

  5. Linux Programmer's Manual --- reboot

    REBOOT(2) Linux Programmer's Manual REBOOT(2) NAME reboot - reboot or enable/disable Ctrl-Alt-Del SY ...

  6. C# 委托、事件,lamda表达式

    参考文章 1. 委托Delegate C#中的Delegate对应于C中的指针,但是又有所不同C中的指针既可以指向方法,又可以指向变量,并且可以进行类型转换, C中的指针实际上就是内存地址变量,他是可 ...

  7. 怎对于Foreach 不能添加IF的问题

    我不们直接在Foreach 里面直接添加IF,这样会报错,这个前提是子视图,其他的我没有试验过.像这样: @foreach (Gift.Modules.Model.Entitys.XT_CZ item ...

  8. “/”和“\\”和feof();

    filename=c:/test/abc.text filename=c:\\test\\abc.test "\\"为转义字符: feof();函数检测文件是否已经到达末尾(EOF ...

  9. Node.js 把图片流送到客户端

    效果: 代码: var http=require('http'); var fs=require('fs'); var path=require('path'); var mime=require(' ...

  10. mysql中show processlist过滤和杀死线程

    select * from information_schema.processlist where HOST LIKE '%192.168.1.8%'; kill ID列