gpt4 book ai didi

Java按第三列的数值对二维字符串数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:10:28 25 4
gpt4 key购买 nike

我得到了一个文本文件,其中包含滑冰选手的国家/地区、姓名和分数。我必须将每一行读入一个数组,然后按降序对数组进行排序。

我设法像这样组织了一切:

infoArray[0][0] = "GER";
infoArray[0][1] = "Nathalie WEINZIERL Maylin & Daniel Peter LIEBERS Nelli & Alexander";
infoArray[0][2] = "17.0";

infoArray[1][0] = "RUS";
infoArray[1][1] = "Evgeny PLYUSHCHENKO Tatiana & Maxim Yulia LIPNITSKAYA Ekaterina & Dmitri"
infoArray[1][2] = "37.0";

infoArray[2][0] = "CHN";
infoArray[2][1] = "Kexin ZHANG Han YAN Cheng & Hao Xintong & Xun"
infoArray[2][2] = "20.0"

等等 10 个不同的国家。

我现在需要的是使用第三列按降序显示 10 个不同的国家/地区,这是数值(尽管它是字符串格式)。

换句话说,我希望这三个国家的输出是:

RUS: 37.0
CHN: 20.0
GER: 17.0

我考虑过使用嵌套循环,但不太明白如何让它发挥作用。

最佳答案

使用 Java 8,你可以 create a Comparator使用相应的列作为比较键,然后反转该比较器。这将对数组进行就地排序。

Arrays.sort(infoArray, 
Comparator.comparing((String[] entry) -> Double.parseDouble(entry[2]))
.reversed());

或者对于旧版本的 Java,创建您自己的 Comparator 实现 compare:

Arrays.sort(infoArray, new Comparator<String[]>() {
public int compare(String[] o1, String[] o2) {
return Double.compare(Double.parseDouble(o2[2]),
Double.parseDouble(o1[2]));
}
});

然而,如评论中所述,可能值得为这些信息项创建一个并让该类实现Comparable:

class Info implements Comparable<Info> {
String nation;
String names;
double score;

// more stuff ...

public int compareTo(Info other) {
return Double.compare(this.score, other.score);
}
}

然后这样排序:

Arrays.sort(infoArray, Comparator.reverseOrder());

关于Java按第三列的数值对二维字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com