0
点赞
收藏
分享

微信扫一扫

javaSE___集合体系05___LIst集合下三个子类之____LinkedList集合

追风骚年 2022-01-12 阅读 80

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
		}
	}

————————

创作不易,如觉不错,随手点赞,关注,收藏(* ̄︶ ̄),谢谢~~

举报

相关推荐

0 条评论