从文件中订购数字,分成两行

时间:2017-01-10 11:51:51

标签: java file

我有一个用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

1 个答案:

答案 0 :(得分:1)

我创建了一个类Data,其中有Double attributesComparable 覆盖 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);
        }
    }