簡體   English   中英

創建一個排序的鏈表類

[英]Creating a sorted linked list class

我正在嘗試創建擴展LinkedList的SortedLinkedList類。 該類應該將項目添加到SortedLinkedList並進行排序。

我試圖覆蓋boolean add(E obj)方法以便按排序順序添加項目。

在一個Stackoverflow問題上,我發現了以下重寫add(E obj)的方法:

public boolean add(E obj) {
    int index = 0;
    for( ; index<size() ; index++){
        E object= get(index);

        if(obj.compareTo(object) < 0){
            break;
        }
    }

    add(index, obj);
    return true;
};

我了解此方法的工作原理,但是我已經讀到,使用ListIterator比使用get(index)更有效。 我一直在嘗試使用ListIterator,但似乎無法正常工作。

這就是我使用Listiterator的距離,我敢肯定這有問題,但我似乎無法弄清楚:

public boolean add(E obj)
{   
    add(size(), obj);
    ListIterator<E> iterator = listIterator();

    while(iterator.hasNext())
    {
        E object = iterator.next();
        if(obj.compareTo(object)<0)
        {
            //do something;
        }
    }
    return true;
}

關於如何使用迭代器對列表進行排序的任何建議?

不要考慮使用迭代器對列表進行排序。 考慮使用迭代器將新元素插入已排序的列表中。

您的列表將開始為空。 添加第一個元素時,將具有一個元素的列表,根據定義,該列表將進行排序。 如果您確保始終在正確的位置添加后續元素,則列表將保持排序!

這正是使用get所做的代碼所做的,但是正如您正確地說的那樣,這對於鏈接列表而言並不高效。 您需要做的是使用迭代器重現該算法。

提示:列表迭代器可讓您在當前位置添加元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM