java linkedlist 使用

linkedlist的使用過程主要要注意下面幾點
1)linkedlis允許插入null節點
2)刪除元素最後基於迭代器操作,可以保障併發安全
3)使用Collections.sort方法對list排序時,在沒有比較器的情況下,元素必須非空且可排序,在有比較器的情況下,若比較器考慮了元素爲空的情況,則null元素可參與排序
4)可以使用linkedlist實現stack和queue的功能

package com.basic.util;

import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class BasicLinkedArrayList {
    public static void main(String[] args) {
        Stack<String> s = new Stack<String>();
        s.push("1");
        s.push("2");
        s.push("3");
        s.push(null);

        // 獲取棧頂元素
        System.out.println(s.peek());

        queue<Integer> q = new queue<Integer>();
        q.offer(1);
        q.offer(2);
        q.offer(3);

        // 獲取隊列頭元素
        System.out.println(q.peek());

        List<Integer> list = new LinkedList<Integer>();
        list.add(1);
        list.add(3);
        list.add(2);
        list.add(3);
        list.add(5);

        // 列表排序
        Collections.sort(list);


        // 基於iter刪除元素,併發安全
        Iterator<Integer> iter = list.iterator();
        while (iter.hasNext()) {
            Integer i = iter.next();
            if (i.intValue() == 3) {
                iter.remove();
            }
        }
    }
}

class Stack<E> {
    private final LinkedList<E> contains = new LinkedList<E>();

    public boolean isEmpty() {
        return this.contains.isEmpty();
    }

    public void push(E e) {
        this.contains.addFirst(e);
    }

    public E pop() {
        return this.contains.pollFirst();
    }

    public E peek() {
        return this.contains.peekFirst();
    }
}

class queue<E> {
    private final LinkedList<E> contains = new LinkedList<E>();

    public void offer(E e) {
        this.contains.addFirst(e);
    }

    public E poll() {
        return this.contains.pollLast();
    }

    public E peek() {
        return this.contains.peekLast();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章