У меня есть коллекция иерархических элементов в несортированной коллекции. Каждый из этих элементов имеет поле previousItem:Java: есть коллекция элементов, где каждый элемент имеет поле «previousItem», что является наиболее эффективным способом заказа коллекции?
public class Item{
public Item previousItem;
}
Что является наиболее эффективным способом обработки этих элементов, так что выход представляет собой набор, где деталь без previousItem является первым элементом коллекции и каждого subesequent Предыдущий элемент предыдущего элемента - это предыдущий элемент в коллекции?
Моя первая идея была бы реализовать Сопоставимые интерфейс в классе Item:
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);
}
Есть ли более эффективный способ (меньше времени на обработку/количество требуемых итераций), чтобы упорядочить коллекцию, чтобы они находились в логическом, иерархическом порядке?