LinkedList 的get方法分析---java


Java LinkedList.get() 獲取元素

 

Get(int)方法的實現在remove(int)中已經涉及過了。首先判斷位置信息是否合法(大於等於0,小於當前LinkedList實例的Size),然后遍歷到具體位置,獲得節點的業務數據(element)並返回。

方法

get(int index):返回此列表中指定位置處的元素。
getFirst():返回此列表的第一個元素。
getLast():返回此列表的最后一個元素。
indexOf(Object o):返回此列表中首次出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。
lastIndexOf(Object o):返回此列表中最后出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1

 

    public E get(int index) {
        checkElementIndex(index);
        return node(index).item;
    }

 

    private void checkElementIndex(int index) {
        if (!isElementIndex(index))
            throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
    }

 

    /**
     * Returns the (non-null) Node at the specified element index.
     */
    Node<E> node(int index) {
        // assert isElementIndex(index);

        if (index < (size >> 1)) {
            Node<E> x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node<E> x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }
    }

注意細節:位運算與直接做除法的區別。先將index與長度size的一半比較,如果index<size/2,就只從位置0往后遍歷到位置index處,而如果index>size/2,就只從位置size往前遍歷到位置index處。這樣可以減少一部分不必要的遍歷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM