创建两个类,一个是MyStack方法类,一个是链表测试类LinkedList1
MyStack方法类:
注意在增加的方法中,要始终把添加的元素添加在第一位,模仿进栈,在提取元素的时候,记得用linkedList.removeFist()方法,这样可以始终提取第一个(也就是进栈的最后一个元素),模仿出栈功能,千万不能用getFirst()方法,因为等到后面测试类循环遍历集合,提元素的时候,会重复提取第一个元素,用removeFirst()方法:可以(提取)删除第一个,第二个就是第一个,可以提取不重复的,循环遍历的时候,正好模拟出栈
import java.util.LinkedList;
public class MyStack {
private LinkedList linkedList;
MyStack(){
linkedList = new LinkedList();
}
public void jiaAdd(Object obj){
linkedList.addFirst(obj);
}
public int stackSize(){
return linkedList.size();
}
public Object getObject(){
// return linkedList.getFirst();
return linkedList.removeFirst();//不能写成getFirst,否则一直拿第一个,删除了一个,下一个就是第一个
}
@Override
public String toString() {
return "MyStack{" +
"linkedList=" + linkedList +
'}';
}
}
LinkedList1测试类:(for循环遍历,提取元素)
public class LinkedListTest1 {
public static void main(String[] args) {
// LinkedList list1 = new LinkedList();
//
// list1.add("hello");
// list1.add("world");
// list1.add("java");
// list1.add("hadoop");
// System.out.println("list1: " + list1);
//
// System.out.println("----------------------------------");
// for (int i = list1.size() - 1; i >= 0; i--) {
// System.out.println(list1.remove(i));
// }
/*
如果按照上面的做法解题,0分。
*/
MyStack myStack = new MyStack();
myStack.shujiaAdd("hello");
myStack.shujiaAdd("world");
myStack.shujiaAdd("java");
myStack.shujiaAdd("hadoop");
System.out.println(myStack);
System.out.println("===========================");
for (int i = myStack.stackSize() - 1; i >= 0; i--) {
System.out.println(myStack.getObject());
}
}
}