【发布时间】:2013-08-05 22:55:53
【问题描述】:
所以,
我有一种情况,我使用整数列表从不同来源获取一些数据。结果,我得到了两个列表,它们都具有与内容相同的 POJO 类型,并且包含了输入列表中的所有元素,但是顺序未知。
我需要的是让这些 POJO 按照与我的第一个列表相同的顺序排序(这个 Integer 是 POJO 中带有 getter/setter 的字段),所以我得到一个包含 POJO 的列表,其顺序与我的 Integer 完全相同列表。
所以,我正在考虑的步骤是:
- 将两个 POJO 列表合二为一,因此我至少有 2 个大小相同的列表(整数和 POJO),我知道它们包含匹配的元素。
- 对生成的 POJO 列表进行排序以匹配整数列表。
但是,对于第 2 步,我需要找到好的(即高效且整洁的)方法来完成它...我正在考虑创建一个类似这样的比较器:
public class POJOComparable implements Comparator<MyPOJO>{
private List<Integer> values;
public POJOComparable(List<Integer> values) {
this.values = values;
}
@Override
public int compare(MyPOJO o1P, MyPOJO o2P) {
int o1 = values.indexOf(o1P.getId());
int o2 = values.indexOf(o2P.getId());
return (o1>o2 ? -1 : (o1==o2 ? 0 : 1));
}
}
现在,这是进行此类排序的好方法还是有更好或更有效的方法?列表将包含大约 20 个项目,但这种排序会经常执行,所以我正在寻找有效的方法。
【问题讨论】:
-
将
List<MyPojo>的值存储在TreeMap<Integer, MyPojo>中,并让这个集合为您进行排序。 -
我不太明白。你有一个
List<Integer>和一个List<Pojo>并且你想匹配这些元素?或者只是对List<Pojo>进行排序? -
好吧,不得不说,List
可能包含这样的内容:(5, 7, 2, 35, 21, 78, 1),这是我期望的正确顺序TreeMap,如果我想将第一个 Collection 的索引存储在 TreeMap 中,我仍然必须使用第一个 List 中的值构造 TreeMap。那会比我的方法更有效吗? -
@BoristheSpider,这个想法是匹配两个列表的顺序。在 POJO 中,我有一个与整数列表的值匹配的整数字段,但是我的整数列表的顺序不同。
标签: java sorting collections