我有一个用Java编写的算法,用这种方式编写:
3.03 1.08
2.02 4.07
1.04 2.010
4.02 2.09
6.02 3.57
5.03 4.00
7.06 2.012
8.07 2.145
9.10 2.04
10.11 2.02
基本上每行有2个数字,用空格分隔。是否可以读取此文件并按降序排序第二行?这样结果是这样的:
2.02 4.07
5.03 4.00
6.02 3.57
8.07 2.145
4.02 2.09
9.10 2.04
10.11 2.02
7.06 2.012
1.04 2.01
3.03 1.08
答案 0 :(得分:1)
我创建了一个类Data
,其中有Double attributes
个Comparable
覆盖 compareTo
方法,它将对{{1}进行排序降序取决于 SecondNumber 值。
Data
在这个class Data implements Comparable<Data> {
double FirstNumber;
double SecondNumber;
public Data( double FirstNumber, double SecondNumber) {
this.FirstNumber = FirstNumber;
this.SecondNumber = SecondNumber;
}
@Override
public int compareTo(Data o) {
if (this.SecondNumber < o.SecondNumber) {
return 1;
} else {
return -1;
}
}
}
方法中,我创建了一个数组 main
,其中填充了您问题中提供的数据。要调用 compareTo 方法,只需调用隐式调用 compareTo 方法的Data
。
java.util.Arrays.sort(map);
结果将是:
public static void main(String[] args) throws IOException {
Data[] map = new Data[10];
map[0] = new Data(3.03,1.08);
map[1] = new Data(2.02,4.07);
map[2] = new Data(1.04,2.010);
map[3] = new Data(4.02, 2.09);
map[4] = new Data(6.02,3.57);
map[5] = new Data(5.03,4.00);
map[6] = new Data(7.06,2.012);
map[7] = new Data(8.07,2.145);
map[8] = new Data(9.10,2.04);
map[9] = new Data(10.11,2.02);
java.util.Arrays.sort(map);
for (int i = 0; i < 10; i++) {
System.out.println(map[i].FirstNumber +" "+ map[i].SecondNumber);
}
}