我有2个arraylists
xVal:[9 8 6 5 4 3 2 -10]
yVal:[3 6 5 7 9 1 8 10]
我想按升序对xVal进行排序,并且在xVal排序时也要移动相应的yVal。
结果将是
xVal:[ - 10 2 3 4 5 6 8 9]
yVal:[10 8 1 9 7 5 6 3]
感谢您抽出时间解释一下
答案 0 :(得分:1)
我建议您在此处使用不同的数据结构。您可以为x / y坐标创建自己的数据类型(POJO),然后您可以在" normal"中对列表进行排序。 Java方式。
这是您可以使用的POJO:
public class Coordinate {
public int x;
public int y;
public Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "[" + x + ", " + y + "] ";
}
}
初始化列表的主程序,根据X坐标对coordinades进行排序,然后显示结果:
public class SortDemo {
public static void main(String[] args) {
// init the list
List<Coordinate> coordinates = new ArrayList<>();
coordinates.add(new Coordinate(9, 3));
coordinates.add(new Coordinate(8, 6));
coordinates.add(new Coordinate(6, 5));
coordinates.add(new Coordinate(5, 7));
coordinates.add(new Coordinate(4, 9));
coordinates.add(new Coordinate(3, 1));
coordinates.add(new Coordinate(2, 8));
coordinates.add(new Coordinate(-10, 10));
// sort
Collections.sort(coordinates, (coordinate1, coordinate2) -> coordinate1.x - coordinate2.x);
// display the content of the sorted list
System.out.println(coordinates);
}
}
结果:
[-10, 10] , [2, 8] , [3, 1] , [4, 9] , [5, 7] , [6, 5] , [8, 6] , [9, 3]
修改强>
返回对象的字符串表示形式。一般来说, toString方法返回一个&#34;文本表示&#34;的字符串。这个 宾语。结果应该是简洁但信息丰富的表示 一个人很容易阅读。建议所有人 子类重写此方法。
例如:
Coordinate coordinate = new Coordinate(-10, 10);
System.out.println(coordinate);
OR
Coordinate coordinate = new Coordinate(-10, 10);
System.out.println(coordinate.toString());
您可以在IDE中以DEBUG模式进行检查。
<强>排序强>
上面提到的简短形式的集合排序与此相同:
class MySort implements Comparator<Student> {
public int compare(Coordinate coordinate1, Coordinate coordinate2) {
return coordinate1.x - coordinate2.x;
}
}
// how to use
Collections.sort(coordinates, new MySort());