题目为:
Java实现:
import java.util.Stack;
class Bullet{
int id;
public Bullet(int id) {
this.id = id;
}
}
class Magazine{
Stack<Bullet> bulletStack = new Stack<>();
Boolean pushBullet(Bullet b){
if (bulletStack.size() == 6){
System.out.println("该弹匣子弹已经装满!");
return false;
}
else {
bulletStack.push(b);
System.out.println("成功装入一枚子弹" + b.id);
return true;
}
}
Boolean popBullet(){
if (bulletStack.empty() == true){
System.out.println("子弹已用尽!");
return false;
}
else {
System.out.println("打出子弹, 该子弹id为:" + bulletStack.pop().id);
return true;
}
}
}
class Pistol{
Magazine magazine;
Boolean shoot(){
if(magazine.popBullet() == true){
return true;
}
else
return false;
}
void setMagazine(Magazine m) {
this.magazine = m;
}
}
public class shangji0901 {
public static void main(String[] args) {
Magazine magazine1 = new Magazine();
Magazine magazine2 = new Magazine();
magazine1.pushBullet(new Bullet(1));
magazine1.pushBullet(new Bullet(2));
magazine1.pushBullet(new Bullet(3));
magazine1.pushBullet(new Bullet(4));
magazine1.pushBullet(new Bullet(5));
magazine1.pushBullet(new Bullet(6));
magazine2.pushBullet(new Bullet(7));
magazine2.pushBullet(new Bullet(8));
magazine2.pushBullet(new Bullet(9));
magazine2.pushBullet(new Bullet(10));
magazine2.pushBullet(new Bullet(11));
magazine2.pushBullet(new Bullet(12));
Pistol pistol = new Pistol();
pistol.setMagazine(magazine1);
for (int i = 0; i < 6; i++) {
pistol.shoot();
}
pistol.setMagazine(magazine2);
for (int i = 0; i < 6; i++) {
pistol.shoot();
}
}
}
集合框架
- JDK中提供了一系列特殊的类,这些类可以存储任意类型的对象,并 且长度可变,在Java中这些类被统称为集合。
- 集合类都在java.util包中,在使用时一定要注意导包的问题,否则会出现异常。
- 集合按照其存储结构可以分为两大类,即单列集合Collection和双列集合Map。
Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合,如下表所示。
Stack泛型类创建一个堆栈对象,常用方法如下:
- – public E push(E item)实现压栈操作。
- – public E pop()实现弹栈操作。
- – public boolean empty()判断堆栈是否还有数据。
- – public E peek()获取堆栈顶端的数据,但不删除该数据。
- – public int search(Object data)获取数据在堆栈中的位置。