我的方法中有 2 个列表按特定顺序排序(根据 ID 字段升序或降序)
我有一个自定义比较器实现,它允许我将两个列表都放入树集中并获得所需的结果。
我的问题是加载树集后,我需要从该方法返回一个列表。我的第一个实现并不关心排序,所以我这样做了(复合是我命名的 TreeSet):
composite.addAll(custom);
composite.addAll(reference);
Iterator<MyObject> anIter = composite.iterator();
ArrayList<MyObject> returnVal = new ArrayList<MyObject>();
while(anIter.hasNext())
returnVal.add(anIter.next());
执行此操作后,“自定义”和“参考”这两个列表将恢复为默认顺序。Collection 的 iterator() 方法状态的 Javadocs 将按升序返回列表,这可能是我的麻烦所在。
那么......有没有办法在保护原始列表顺序的同时返回 TreeSet 的内容?我想到了一个树集,因为我想在两个集合上使用比较器接口的强大功能,将它们与 addAll() 联合起来,并抛出欺骗。
任何有关保护排序的建议将不胜感激。
编辑*
Set<MyObject> composite = new TreeSet<MyObject>(new Comparator<MyObject>(){
@Override
public int compare(MyObject arg0, MyObject arg1) {
int arg0ID = arg0.getObjID();
int arg1ID = arg1.getObjID();
if(arg0ID < arg1ID) return -1;
else if(arg0ID> arg1ID) return 1;
else return 0;
}
});