解决方法
你不能用比较器做到这一点.您的问题的解决方案是构建第三个列表,该列表包含给定列表中的对应元素对.然后排序,并复制回原始列表.
public class Pair<X,Y> { public final X x; public final Y y; public Pair(X x,Y y) { this.x = x; this.y = y; } } public static<X,Y> void sortTwoLists(List<X> xs,List<Y> ys,final Comparator<X> c) { if (xs.size() != ys.size()) throw new RuntimeException("size mismatch"); List<Pair<X,Y>> temp = new ArrayList<Pair<X,Y>>(); for (int i = 0; i < xs.size(); ++i) temp.add(new Pair<X,Y>(xs.get(i),ys.get(i))); Collections.sort(temp,new Comparator<Pair<X,Y>>() { @Override public int compare(Pair<X,Y> a,Pair<X,Y> b) { return c.compare(a.x,b.x); } }); for(int i = 0; i < xs.size(); ++i) { xs.set(i,temp.get(i).x); ys.set(i,temp.get(i).y); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。