gpt4 book ai didi

java - 基于整数对Java中的多类型字符串ArrayList进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 19:42:51 24 4
gpt4 key购买 nike

我有一个这样的数据集:

1,JOHN,1934
2,TERENCE,1914
3,JOHN,1964
4,JOHN,1904
5,JOHN,1924
6,JOHN,1954
7,JOHN,1944
8,JOHN,1984
9,JOHN,1974
10,JOHN,1994

我从这样的文本文件加载到 String[] 的 ArrayList 中:

ArrayList<String[]> records = new ArrayList<>();
String fileLocation = System.getProperty("user.dir");
String dataPath = fileLocation + File.separator + "boys-names.txt";
try {
try (BufferedReader br = new BufferedReader(new FileReader(dataPath))) {
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
records.add(values);
}
}
} catch (IOException e) {
e.printStackTrace();
}

我想像这样按增加的对数据集进行排序:

4,JOHN,1904
2,TERENCE,1914
5,JOHN,1924
1,JOHN,1934
7,JOHN,1944
6,JOHN,1954
3,JOHN,1964
9,JOHN,1974
8,JOHN,1984
10,JOHN,1994

问题: ArrayList 内置的排序方法Collections.sort(list); 只能对单一类型的数据起作用。但是,在我的例子中,我有多种类型的字符串(字符串整数),并且排序应该基于 Integers。那么,有什么办法可以解决这个问题吗?

最佳答案

考虑为您的数据定义一个模型类 - 我们称它为 MyData :

public class MyData {
private long id;
private String name;
private Year year;

//getters setters constructor
}

如果最后一个整数值表示年份,为什么不使用 java.time.Year直接地?然后你可以使用 List::sort 对这个列表进行排序方法并传递一个比较器:

Comparator<MyData> comparator = Comparator.comparing(MyData::getYear);

myDataList.sort(comparator);

关于java - 基于整数对Java中的多类型字符串ArrayList进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57242166/

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