LinkedList:
* 底层数据结构是链表,查询慢,增删快
* 线程不安全,效率高
LinkedList的特有功能:
* A:添加功能
* public void addFirst(Object e)
* public void addLast(Object e)
* B:获取功能
* public Object getFirst()
* public Obejct getLast()
* C:删除功能
* public Object removeFirst()
* public Object removeLast()
public static void main(String[] args) {
// 创建集合对象
LinkedList link = new LinkedList();
// 添加元素
link.add("hello");
link.add("world");
link.add("java");
// public void addFirst(Object e)
// link.addFirst("javaee");
// public void addLast(Object e)
// link.addLast("android");
// public Object getFirst()
// System.out.println("getFirst:" + link.getFirst());
// public Obejct getLast()
// System.out.println("getLast:" + link.getLast());
// public Object removeFirst()
System.out.println("removeFirst:" + link.removeFirst());
// public Object removeLast()
System.out.println("removeLast:" + link.removeLast());
// 输出对象名
System.out.println("link:" + link);
}
需求1:请用LinkedList模拟栈数据结构的集合,并测试
*题目的意思是:
* 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟。
如果使用自带的LinkedList完成需求时:
// A: LinkedList的特有添加功能addFirst()
// B:栈的特点先进后出
// 创建集合对象
LinkedList link = new LinkedList();
// 添加元素
link.addFirst("hello");
link.addFirst("world");
link.addFirst("java");
// 遍历
Iterator it = link.iterator();
while (it.hasNext()) {
String s = (String) it.next();
System.out.println(s);
}
如果使用自己封装的的LinkedList完成需求时:
class MyStack:
public class MyStack {
private LinkedList link;
public MyStack() {
link = new LinkedList();
}
public void add(Object obj) {
link.addFirst(obj);
}
public Object get() {
// return link.getFirst();
return link.removeFirst();
}
public boolean isEmpty() {
return link.isEmpty();
}
}
class MyStackDemo:
public static void main(String[] args) {
// 创建集合对象
MyStack ms = new MyStack();
// 添加元素
ms.add("hello");
ms.add("world");
ms.add("java");
// System.out.println(ms.get());
// System.out.println(ms.get());
// System.out.println(ms.get());
// NoSuchElementException
// System.out.println(ms.get());
while(!ms.isEmpty()){
System.out.println(ms.get());
}
}
}