所以,
我有一种情况,我使用整数列表从不同来源获取一些数据。结果,我得到了两个列表,它们都具有与内容相同的 POJO 类型,并且包含我输入列表中的所有元素,但是顺序未知。
我需要的是让这些 POJO 以与我的第一个列表相同的顺序排序(这个 Integer 是 POJO 中带有 getter/setter 的字段),所以我得到一个包含 POJO 的列表,其顺序与我的 Integer 列表的顺序完全相同。
所以,我正在考虑的步骤是:
- 将两个 POJO 列表合二为一,因此我至少有 2 个大小相同的列表(整数和 POJO),我知道它们包含匹配的元素。
- 对生成的 POJO 列表进行排序以匹配 Integer 列表。
但是,对于第 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 个项目,但这种排序会经常执行,所以我正在寻找有效的方法来完成它。