集合第七发练习之利用ArrayList做栈、队列
栈:后进先出。
队列:先进先出。
利用这个核心思想,结合集合的add和remove方法做的栈和队列如下代码所示:
主类(t1()和t2()分别演栈和队列):
- package cn.hncu.mySet2;
- import java.util.Iterator;
- import cn.hncu.set.Person;
- public class TestDemo {
- public static void main(String[] args) {
- t1();
- // t2();
- }
- private static void t1() {
- Person p1=new Person("01", "张三", 20);
- Person p2=new Person("02", "李四", 21);
- Person p3=new Person("03", "王五", 22);
- Person p4=new Person("04", "mis", 17);
- MyStack stack=new MyStack();
- stack.in(p1);
- stack.in(p2);
- stack.in(p3);
- System.out.println(stack.out());
- System.out.println(stack.out());
- System.out.println(stack.out());
- System.out.println(stack.out());
- System.out.println(stack.out());
- }
- private static void t2() {
- Person p1=new Person("01", "张三", 20);
- Person p2=new Person("02", "李四", 21);
- Person p3=new Person("03", "王五", 22);
- Person p4=new Person("04", "mis", 17);
- MyQueue queue=new MyQueue();
- queue.in(p1);
- queue.in(p2);
- queue.in(p3);
- queue.in(p4);
- System.out.println(queue.out());
- System.out.println(queue.out());
- System.out.println(queue.out());
- System.out.println(queue.out());
- System.out.println(queue.out());
- }
- }
栈类:
- package cn.hncu.mySet2;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Set;
- import java.util.Stack;
- public class MyStack {
- private LinkedList mystack=new LinkedList();
- public void in(Object obj){
- mystack.add(obj);
- }
- public Object out(){
- if(mystack.isEmpty()){
- return null;
- }
- return mystack.removeLast();
- }
- public boolean isEmpty(){
- return mystack.isEmpty()?true:false;
- }
- }
队列类:
- package cn.hncu.mySet2;
- import java.util.LinkedList;
- public class MyQueue {
- private LinkedList list=new LinkedList();
- public void in(Object obj){
- list.add(obj);
- }
- public Object out(){
- if(list.isEmpty()){
- return null;
- }
- return list.remove(0);
- }
- public boolean isEmpty(){
- return list.isEmpty()?true:false;
- }
- }
person类:
- package cn.hncu.mySet2;
- public class Person {
- private String Sno;
- private String name;
- private int age;
- public Person(String sno, String name, int age) {
- super();
- Sno = sno;
- this.name = name;
- this.age = age;
- }
- public String getSno() {
- return Sno;
- }
- public void setSno(String sno) {
- Sno = sno;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- @Override
- public String toString() {
- return "Person [Sno=" + Sno + ", name=" + name + ", age=" + age + "]";
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((Sno == null) ? 0 : Sno.hashCode());
- result = prime * result + age;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Person other = (Person) obj;
- if (Sno == null) {
- if (other.Sno != null)
- return false;
- } else if (!Sno.equals(other.Sno))
- return false;
- if (age != other.age)
- return false;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- return true;
- }
- }
集合第七发练习之利用ArrayList做栈、队列的更多相关文章
- C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加
class Card { private string name; public string Name { get { return name; } set { name = value; } } ...
- Java集合源码分析(一)ArrayList
前言 在前面的学习集合中只是介绍了集合的相关用法,我们想要更深入的去了解集合那就要通过我们去分析它的源码来了解它.希望对集合有一个更进一步的理解! 既然是看源码那我们要怎么看一个类的源码呢?这里我推荐 ...
- Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- Java集合框架(三)—— List、ArrayList、Vector、Stack
List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...
- 【转】Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)
Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...
- Java小白集合源码的学习系列:ArrayList
ArrayList源码学习 本文基于JDK1.8版本,对集合中的巨头ArrayList做一定的源码学习,将会参考大量资料,在文章后面都将会给出参考文章链接,本文用以巩固学习知识. ArrayList的 ...
随机推荐
- noip数论复习总结
(上不了p站我要死了,侵权度娘背锅) 勉勉强强算是把数论复习的差不多了. 总结一下吧. 其实数论的知识大部分是结合在一起的,勉强分类总结 组合数 求法 组合数的求法根据不同情况选用不同的方法 2.3都 ...
- iOS isa 浅析
看见一到面试题讲述一下Objective-C中的isa?完全没听说过,打算小研究一下. 参考:http://blog.sina.com.cn/s/blog_7a2ffd5c01010nme.html ...
- Vue + Webpack + Vue-loader 系列教程
http://www.cnblogs.com/terry01/p/5953464.html 介绍 Vue-loader 是什么? vue-loader 是一个加载器,能把如下格式的 Vue 组件转化成 ...
- ios学习流水账1
1.UIImageview设边框.圆角 需要引QuartzCore/QuartzCore.h> //设UIImageView边框 CALayer *layer = [m_imgView laye ...
- leetcode题解:Construct Binary Tree from Inorder and Postorder Traversal(根据中序和后序遍历构造二叉树)
题目: Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume ...
- DatagramPacket,DatagramSocket
package test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSo ...
- zabbix日志监控
一般情况下,日志最先反映出应用当前的问题,在海量日志里面找到我们异常记录,例如监控系统日志.nginx.Apache.业务日志,然后记录下来,并且根据情况报警. 1.日志监控项介绍 最主要的是监控日志 ...
- 使用RTTI为继承体系编写”==”运算符
转载请注明出处:http://www.cnblogs.com/inevermore/p/4012079.html RTTI,指的是运行时类型识别技术. 先看一个貌似无关的问题: 为继承体系 ...
- Java List具体解释
List接口是Collection的子接口,用于定义线性表结构,当中ArrayList能够理解为一个动态数组,而LinkedList能够理解为一个链表 经常使用操作: 插入和删除操作: void ad ...
- psql命令行快速参考
psql的命令语法是: psql [options] [dbname [username]] psql命令行选项以及它们的意思在表1-1中列出.使用以下命令可以看到psql完整的选项列表: $ psq ...