栈:后进先出。

队列:先进先出。

利用这个核心思想,结合集合的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. kong的preserve_host和strip_uri解析

    preserve_host:当代理的时候,k代理时,Kong的默认行为是将上游请求的Host头设置为API的upstream_url属性的主机名.这个参数接受一个boolean值. 当为FALSE时, ...

  2. PHP开发环境配置系列(四)-XAMPP常用信息

    PHP开发环境配置系列(四)-XAMPP常用信息 博客分类: PHP开发环境配置系列 xamppphp 完成了前面三篇后(<PHP开发环境配置系列(一)-Apache无法启动(SSL冲突)> ...

  3. Parse error: syntax error, unexpected end of file in *.php on line * 解决方法

    Parse error: syntax error, unexpected end of file in *.php on line * 解决方法   这篇文章主要介绍了PHP错误Parse erro ...

  4. 【Linux】linux下查看目录所在分区

    命令如下: df -h 目录名 具体使用例子如下:查看/home/sxd/文档处于哪个分区 ------------------------------------------------------ ...

  5. kubernetes1.5.2--部署监控服务

    本文基于kubernetes 1.5.2版本编写 Heapster是kubernetes集群监控工具.在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收 ...

  6. ios开发 Socket通信

    Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...

  7. Shell--Bash shell的操作环境

    一.路径与命令查找顺序 1.以相对/绝对路径执行命令,例如“/bin/ls”或“./ls”; 2.由alias找到该命令来执行 3.由bash内置的(builtin)命令来执行 4.通过$PATH这个 ...

  8. zabbix通过snmp监控windows主机

    1.开启Windows的snmp功能 2.配置snmp服务 设置snmp服务社区名称及允许的主机,设置完成后重启snmp服务 3.在zabbix server上测试 测试需要使用命令snmpwalk, ...

  9. Java虚拟机内存分配和回收策略

    1 对象优先分配在Eden区 对象优先在Eden进行分配,大多数情况下,对象在新生代Eden区进行分配.当Eden区没有足够的空间进行分配时,虚拟机会发起一次Minor GC. 新生代GC(Ninor ...

  10. WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动

    转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...