集合第七发练习之利用ArrayList做栈、队列
2024-09-04 14:40:17
栈:后进先出。
队列:先进先出。
利用这个核心思想,结合集合的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;
- }
- }
最新文章
- 缓存AsimpleCache -- 解决Android中Sharedpreferences无法存储List数据/ASimpleCache
- memcpy和memmove
- 常用到的git,mvn,postgres,vim命令总结
- 【JAVA】Quartz中时间表达式的设置
- 技巧~向URL地址添加参数
- oracle跟踪事件(dump)总结
- 关于Objective-C格式化处理相关规范
- 20.allegro.铺铜[原创]
- Dijkstra in python
- windows2008 x86 安装 32位oracle
- 在ubuntu下设置eclipse开发STM32等嵌入式设备
- iOS开发之Autolayout
- Python 直接赋值、浅拷贝和深度拷贝解析
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果
- Oracle (11g) 修改默认的用户名及密码
- [区块链] 加密算法——Hash算法(进阶)
- Dynamics 365 Online-Security Updates On TLS 1.2
- 紧急通知:Onion勒索病毒正在大范围传播!已有大量学生中招!(转)
- LeetCode(50):Pow(x, n)
- 简明python教程 --C++程序员的视角(六):输入输出IO
热门文章
- JavaSript模块规范 - AMD规范与CMD规范介绍 (转)
- 如何在Blog中加入Google Analytics
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- VS快捷键说明
- selenium firefox设置代理
- 机器学习入门之四:机器学习的方法--SVM(支持向量机)(转载)
- javascript event loop
- Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
- jQuery 技术揭秘
- JavaScript对象this指向(普通键this指向 非指向函数的键)