LinkedList集合
一、LinkedList的特有功能:
1、public void addFirst(E e)及addLast(E e) 一个是在头加,一个是在尾加,测试如下:
public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.addFirst("a");
        list.addFirst("b");
        list.addFirst("c");
        list.addFirst("d");
        list.addLast("e");
        System.out.println(list);	//[d,c,b,a,e]
    }
2、public E getFirst()及getLast() 获取第一个元素,获取最后一个元素,测试如下:
public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.addFirst("a");
        list.addFirst("b");
        list.addFirst("c");
        list.addFirst("d");
        list.addLast("e");
        System.out.println(list.getFirst());        //d
        System.out.println(list.getLast());         //e
    }
3、public E removeFirst()及public E removeLast() 删除第一个元素,删除最后一个元素,测试如下:
public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.addFirst("a");
        list.addFirst("b");
        list.addFirst("c");
        list.addFirst("d");
        list.addLast("e");
        System.out.println(list.removeFirst());     //d
        System.out.println(list.removeLast());      //e
        System.out.println(list);                   //[c,b,a]
    }
4、public E get(int index); 获取指定索引的元素,测试如下:
public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.addFirst("a");
        list.addFirst("b");
        list.addFirst("c");
        list.addFirst("d");
        list.addLast("e");
        System.out.println(list.get(1));    //c
    }
二、用LinkedList模拟栈数据结构的集合并测试:
1、简单例子一,用LinkedList模拟栈结构:进来的是a,b,c,d,出去的是d,c,b,a,如下:
/*
模拟进栈方法
*/
public static void main(String[] args) {
        LinkedList list = new LinkedList();					//创建集合对象
        list.addLast("a");
        list.addLast("b");
        list.addLast("c");
        list.addLast("d");
		System.out.println(list.removeLast());          //d
		System.out.println(list.removeLast());          //c
		System.out.println(list.removeLast());          //b
		System.out.println(list.removeLast());          //a
    }
2、例子一改进,如果我们有很多的元素,那是不是都要写很多ist.removeLast()啊?我们改进用循环:
/*
模拟进栈方法
*/
public static void main(String[] args) {
        LinkedList list = new LinkedList();					//创建集合对象
        list.addLast("a");
        list.addLast("b");
        list.addLast("c");
        list.addLast("d");
        while(!list.isEmpty()) {        //是否为空
            System.out.println(list.removeLast());      //输出d,c,b,a
        }
    }
3、我们发现,我们前面的两个模拟是有瑕疵的,看方法名就不像先进后出,我们做一个终极的改进模拟栈结构:
创建一个Stack实体类,封装LinkedList
public class Stack {
	private LinkedList list = new LinkedList();
	
	/*
	 * 模拟进栈方法
	 */
	public void in(Object obj) {
		list.addLast(obj);
	}
	
	/*
	 * 模拟出栈
	 */
	public Object out() {
		return list.removeLast();
	}
	
	/*
	 * 模拟栈结构是否为空
	 */
	
	public boolean isEmpty() {
		return list.isEmpty();
	}
}
测试一下:
public static void main(String[] args) {
		Stack s = new Stack();
		s.in("a");								//进栈
		s.in("b");
		s.in("c");
		s.in("d");
		
		while(!s.isEmpty()) {					//判断栈结构是否为空
			System.out.println(s.out());		//弹栈,输出d,c,b,a
		}
	}










