黑马程序员技术交流社区
标题:
java集合框架模拟堆栈和队列
[打印本页]
作者:
﹏゛心被伱牵
时间:
2012-10-24 10:22
标题:
java集合框架模拟堆栈和队列
我们一般怎么用java现有的东西来模拟栈,比如弹出数据,压入数据等,想写这样一个类,查了API,发现很多可以,大家这怎么弄了,还要队列?
作者:
翁鹏
时间:
2012-10-24 11:23
用数组和链表都可以实现的, 很简单的算法。
作者:
范贞亮
时间:
2012-10-24 12:19
现在基本上都是自己实现Stack 类了 , 应为JDK 提供的Stack 是线程不安全的 , 我们可以用LinkedList类来实现Stack 和Queue , LinkedList提供了丰富的方法来实现这两个类
比如这些
boolean add(E e)
将指定元素添加到此列表的结尾。
void add(int index, E element)
在此列表中指定的位置插入指定的元素。
boolean addAll(Collection<? extends E> c)
添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
boolean addAll(int index, Collection<? extends E> c)
将指定 collection 中的所有元素从指定位置开始插入此列表。
void addFirst(E e)
将指定元素插入此列表的开头。
void addLast(E e)
将指定元素添加到此列表的结尾。
void clear()
从此列表中移除所有元素。
Object clone()
返回此 LinkedList 的浅表副本。
boolean contains(Object o)
如果此列表包含指定元素,则返回 true。
Iterator<E> descendingIterator()
返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
E element()
获取但不移除此列表的头(第一个元素)。
E get(int index)
返回此列表中指定位置处的元素。
E getFirst()
返回此列表的第一个元素。
E getLast()
返回此列表的最后一个元素。
int indexOf(Object o)
返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
int lastIndexOf(Object o)
返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
ListIterator<E> listIterator(int index)
返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。
作者:
冯纪纲
时间:
2012-10-24 12:35
楼主可以自己测试一下...
public class MyArrayStack {
Object[] array; // 数组结构用来保存栈中数据
int top; // 栈中指针,永远指向栈顶的元素
int size; // 栈的大小
int count; // 记录栈中有多少数据
public MyArrayStack(int size) {
array = new Object[size];
top = -1;// 栈底的下一个位置
count = 0;
}
/**
* 入栈操作
*/
public void push(Object o) {
// 判断栈是否已经满了,满了就不能继续添加
if (this.isFull()) {
System.out.println("栈已经满了,不能继续添加数据");
return;
}
top++; // 栈顶指针向上移动一位
count++; // 栈中元素个数加一
this.array[top] = o; // 赋值
}
/**
* 弹出栈顶元素
*/
public Object pop() {
// 先判断栈是否为空,然后在操作。
if (isEmpty()) {
System.out.println("栈一空,没有数据");
return null;
}
Object object = this.array[top];
top--;
count--;
return object;
}
/**
* 判断栈是否满
*/
public boolean isFull() {
return this.count == this.size;
}
/**
* 判断栈是否为空
*/
public boolean isEmpty() {
return this.count == 0;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2