我有位項目的集合未排序的收藏。每個項目都有一個字段previousItem:Java:具有項目集合,其中每個項目都有一個字段「previousItem」,訂購集合的最有效方式是什麼?
public class Item{
public Item previousItem;
}
什麼是處理這些物品的最有效的方式使輸出是一個集合,其中沒有任何previousItem該項目是集各subesequent中的第一項item的previousItem是集合中的前一個項目?
我的第一個想法是落實在項目類Comparable接口:通過項目
public int compareTo(Item that) {
final int BEFORE = -1;
final int EQUAL = 0;
final int AFTER = 1;
if(this.previousItem==null){
return BEFORE;
}
if(that.previousItem==null){
return AFTER;
}
if(this.previousItem.equals(that){
return AFTER;
}else if(that.previousItem.equals(this){
return BEFORE;
}
return EQUAL;
}
,然後循環的將它們添加到一個TreeSet:
SortedSet<Item> itemSortedSet = new TreeSet<Item>();
for (Item item : itemCollection) {
itemSortedSet.add(item);
}
有沒有更有效的方法(減少處理時間/所需迭代的次數)來對集合進行排序,使它們處於邏輯層次順序?