[英]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.