集合第七发练习之利用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的 ...
随机推荐
- [POI2008]Mirror Trap
题目大意: 一个$n(n\le10^5)$个顶点的格点多边形,每条边平行于网格线,每个角度数均为$90^\circ$或$270^\circ$,周长小于$3\times10^5$,每个顶点可以安装激光发 ...
- [COCI2015]ZMIJA
题目大意: 一个$n\times m(n,m\leq1000)$的格子中有若干金币,从左下角出发,每一步可以进行如下操作: 1.向当前方向前进一格: 2.向上移动一步,并调转当前方向. 一开始的方向是 ...
- [51Nod1487]占领资源
题目大意: 有一个$n\times m(x,m\leq 100)$的网格图,每个格子有一个权值$w_{i,j}(1\leq w_{i,j}\leq 9)$.你可以在图中选两个格子,每个格子$(x,y ...
- 在前端页面调用sevlet的路径
1.路径:相对路径和绝对路径 <!-- 使用相对路径访问Servletpath --> <a href="servlet/ServletPath">这是Se ...
- Eclipse使用Debug模式调试Spring Boot项目时跳转到exitCurrentThread的问题
Spring Boot项目使用了spring-boot-devtools工具且在Eclipse中Debug调试会自动跳转到这个方法: public static void exitCurrentThr ...
- NoHttp详解之NoHttp最基本使用(无封装)
NoHttp详细使用文档,请点我移步! 这里是一个最基本的使用,在项目中也可以直接这样使用,如果想学习更多请移步NoHttp主页: https://github.com/yanzhenjie/NoHt ...
- 初试百度地图API
第一次使用百度地图API来定位并显示,参照了官网2.1.0版本demo里的DemoApplication和LocationOverlayDemo两个类来写,整了半天显示一片空白(图一),然后郁闷了半天 ...
- Linux内核锁与中断处理
Linux内核锁 在Linux内核里面,一般采用了如下几种锁的机制,来保证多线程的同步与互斥: (1)原子操作 atomic_t v: void atomic_set(atomic_t *v, int ...
- 可以使用foreach遍历循环的条件
大话C#中能使用foreach的集合的实现 转自:http://www.cnblogs.com/tangzhengyue/p/3339936.html 大家都知道foreach的语法: forea ...
- Linux zip
压缩文件: zip -r res.zip [src/] [abc.txt] 解压文件: unzip res.zip -d dir_path