用LinkedList list实现栈的功能
package homework;
public class Dog extends Pet {
String strain = "dogxx";
int love=80;
public Dog() {
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public Dog(String name,String strain,int health) {
super(name,health);
this.strain = strain;
}
public void print() {
super.print();
System.out.println(" "+strain);
}
@Override
//自定义规则去比较 equals
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj instanceof Dog) {
Dog dog = (Dog)obj;
//狗的品种和名称 相等
if(dog.strain.equals(this.strain) && dog.name.equals(this.name)) {
return true;
}
}
return false;
}
@Override
public String toString() {
String str = this.name+"\t"+this.strain+"\t"+this.health;
return str;
}
public void toHos() {
this.health += 50;
System.out.println("狗打针,吃药!");
}
@Override
public void eat() {
if(this.health+3 > 100) {
System.out.println("不能再吃了!");
} else {
System.out.println("狗在吃东西");
this.health += 3;
}
}
public void jiao() {
System.out.println("狗狗叫!");
}
}
//父类
package homework;
public abstract class Pet {
String name="无名";
int health=100;
int love=100;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public Pet() {}
public Pet(String name,int health) {
this.name = name;
this.health = health;
}
public void print() {
System.out.println(name+" "+health+" "+love);
}
public void toHos() {
this.health += 50;
}
public abstract void eat();
public abstract void jiao();
}
//栈
package homework;
import java.util.LinkedList;
//10 dog
public class Stack {
LinkedList list = new LinkedList();
//入栈
public void push(Pet pet) {
list.addFirst(pet);
}
//出栈 顺便把数据清除掉
public Pet pop() {
return (Pet) list.removeFirst();
}
//判断是否满了
public boolean isFull() {
if(list.size() >= 10) {
return true;
} else {
return false;
}
}
//判断栈是否空了
public boolean empty() {
if(list.size()==0) {
return true;
} else {
return false;
}
}
}
//测试文件
package homework;
public class Test {
public static void main(String[] args) {
Stack stack = new Stack();
for (int i = 0; i < 100; i++) {
Dog dog = new Dog();
dog.setName("神犬"+(i+1)+"号");
dog.setStrain("神犬");
if(!stack.isFull()) {
stack.push(dog);
System.out.println(dog.getName());
} else {
break;
}
}
do {
Pet pet = stack.pop();
System.out.println(pet.getName());
} while(!stack.empty());
if(stack.empty()) {
System.out.println("栈清空了!");
} else {
System.out.println("栈还没空!");
}
}
}
用LinkedList list实现栈的功能的更多相关文章
- 用LinkedList集合演示栈和队列的操作
在数据结构中,栈和队列是两种重要的线性数据结构.它们的主要不同在于:栈中存储的元素,是先进后出:队列中存储的元素是先进先出.我们接下来通过LinkedList集合来演示栈和队列的操作. import ...
- 采用LinkedList来模拟栈数据结构的集合--先进后出
三.用LinkedList来模拟栈数据结构的集合 /* * 自定义一个数据结构为LinkedList的集合类*/public class MyCollection_LinkedList { publi ...
- LinkedList集合 实现栈和队列
LinkedList集合的底层是链表结构实现的,所以可以模拟栈(先进后出)和队列(先进先出). 方法: addFirst() //添加元素到列表的起始位置 addLast() //添加元素到列表的结束 ...
- 【Java基础】用LinkedList实现一个简单栈的功能
栈的基本功能 栈的最基本功能是保障后进先出,然后在此基础上可以对在栈中的对象进行弹入弹出,此外,在弹出时,如果栈为空,则会报错,所以还需要提供获取当前栈大小的方法. 构造存储对象Student /** ...
- 数据结构之栈-JavaScript实现栈的功能
记录自己的学习 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它 ...
- 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法
一,LRU算法介绍 LRU是内存分配中“离散分配方式”之分页存储管理方式中用到的一个算法.每个进程都有自己的页表,进程只将自己的一部分页面加载到内存的物理块中,当进程在运行过程中,发现某页面不在物理内 ...
- java 持有对象
1.泛型和类型安全的容器 ArrayList,可以自动扩充大小的数组,add插入对象,get访问对象,size查看对象数目. 1 /** 2 * 泛型和类型安全的容器 3 * 2016/5/6 4 * ...
- Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)
1. 请用LinkedList模拟栈数据结构的集合,并测试: 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟,使用LinkedList功能方法封装成 ...
- 用LinkedList模拟Stack功能
集合体系在Java中比较重要,整个集合体系是在JDK1.2版本后出现,Collection作为整个体系的顶层,拥有整个体系通用的功能.对于其下面的小弟,也是各有千秋.下面就一道面试题来看看Linked ...
随机推荐
- spring历史和哲学
spring 历史: 2004年 Spring Framework 1.0 final 正式问世. 1.在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分 ...
- oracle OCI lob操作
可以有两种方式来bind lob字段 1)直接绑定lob 值 2)绑定lob locator指针 对于 直接绑定lob值的操作如下 char* sql = "insert into tab_ ...
- idea快捷键、常用设置
代码提示: code completion :ALT + / 选用Eclipse的keymap. 设置代码助手快捷键(keymap-basic) 代码上下行复制(Ctrl + Alt + Down ...
- Hive Join
最近被朋友问到有关于Hive Join的问题,保守回答过后,来补充补充知识: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 一.Hi ...
- 简单来看看JavaBean
1.什么是JavaBean? JavaBean是一个遵循特定写法的java类. 用作JavaBean的类必须有一个公共的,无参数的构造方法. JavaBean的属性与普通的Java类的属性的概念一样, ...
- Android-多线程和进程
http://www.cnblogs.com/plokmju/p/android_ProcessOrThread.html 对于单线程模型,Android有两个规则: 不能阻塞UI线程 不能在工作线程 ...
- 洛谷P2831 愤怒的小鸟(状压dp)
题意 题目链接 Sol 这题....我样例没过就A了??..算了,就当是样例卡精度吧.. 直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数 转移的时候判断一下一 ...
- 用css3+js写了一个钟表
有一天看到css3旋转这个属性,突发奇想的写了一个钟表(没做浏览器兼容),来一起看看是怎么写的吧! 先给个成品图,最终结果是个样子的(动态的). 首先,思考了一下页面的布局,大致需要4层div,最底层 ...
- ES6入门——变量的解构赋值
1.数组的解构赋值 以前为变量复制,只能直接指定值.现在ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 本质上,这种写法属于模式匹配,只要等 ...
- Kettle数据抽取解决方案
一. Kettle介绍 1. Kettle简介 ETL即数据抽取(Extract).转换(Transform).装载(Load)的过程.Kettle的中文翻译为水壶.Kettle以元数据驱动的方式提供 ...