【发布时间】:2015-03-31 22:58:44
【问题描述】:
我有一个 java 对象列表。我使用比较器根据特定字段对对象列表进行排序。现在,当列表未排序时,我需要元素的索引。有人可以举一些例子吗?
【问题讨论】:
标签: java list sorting indexing
我有一个 java 对象列表。我使用比较器根据特定字段对对象列表进行排序。现在,当列表未排序时,我需要元素的索引。有人可以举一些例子吗?
【问题讨论】:
标签: java list sorting indexing
两种方法:
将您的项目包装在一个包含项目及其索引的类中,对列表进行排序,您将记录原始订单
实现您自己的排序算法
【讨论】:
如果您有额外的空间,这仍然可以在O(N log(N))(摊销)时间内完成。只需在排序前构建项目的原始索引的哈希图,然后再将它们读出。
public static <T> int[] sortedIndices(List<T> lst, Comparator<T> comp){
HashMap<T, Integer> indicesMap = new HashMap<T, Integer>();
int i = 0;
for(T t : lst){
indicesMap.put(t, i++);
}
ArrayList<T> cpy = new ArrayList<T>(lst);
Collections.sort(cpy, comp);
int[] indices = new int[cpy.size()];
i = 0;
for(T t : cpy){
indices[i++] = indicesMap.get(t);
}
return indices;
}
【讨论】:
3 去了哪里)。如果是这种情况,那么您必须实现您的算法。因此,如果桌面上有重复项,我同意您的回答。