集合第七发练习之利用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的 ...
随机推荐
- 浅析Oracle PL/SQL 学习--未完待续
这是一篇关于Oracle Pl/SQL数据库编程的课程学习分享... 首先说明几点: 学习这门课程之前,已经学过并且掌握一些基础的SQL语句.数据库结构分析.ER图设计等知识: 这里也只是较为大概地将 ...
- Ubuntu 16.04没有/etc/default/rcS文件的UTC设置选项的问题解决
继续上一篇文章介绍了CentOS的时钟设置:http://www.cnblogs.com/EasonJim/p/8111747.html,大致的知道了BIOS在Linux的时区设置. 而现在关心的问题 ...
- shell中的cut命令
转:http://blog.sina.com.cn/s/blog_5e77c61f0100hqky.html cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期 ...
- javascript 对象属性的添加,删除,json对象和字符串转换方法等
1:动态添加 对象属性 var obj = new Object(); console.log (obj.username); obj.username = "haha"; con ...
- 如何给JQ的ajax方法中的success()传入参数?
当时在使用JQuery提供的Ajax技术的时候,我有个需求,就是要给它请求成功后调用的success()方法传入参数: 所以,我就直接这样子写了: <script> function ge ...
- Snapdragon profiler连不上 android手机
adb devices也是空 开发者选项里面该开的都开了 就可以了 对了数据线不对也会连不上...
- DB2中查询前十数据的sql
select * from A fetch first 10 rows only
- ElasticSearch的按日期排序问题
ES中有一个sort域,类型为date,格式是: yyyy-MM-dd HH:mm:ss 但是,在实际应用中,想仅仅按yyyy-MM-dd排序.我的处理过程是,用es的script,提取出日期,然后按 ...
- EffectiveJava(18)接口优先于抽象类
***接口和抽象类同样可以用来定义多个实现的类型,然而,接口通常是最佳途径.*** 这条规则有个例外 – 当演变的容易性比灵活性和功能性更为重要的时候,应该用抽象来定义类型 ,但前提是必须理解并且可以 ...
- es6 - filter for-chrome
'use strict'; let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; // 除去取余2的 - es6 let es5OddNumbers = numbers ...