gpt4 book ai didi

java - 按多列排序,Java 8

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:35 26 4
gpt4 key购买 nike

考虑下表:

Name Code Number
Mike x6 5.0
Mike b4 3.0
Mike y2 1.0
Tom y2 4.5
Tom x6 4.5
Tom b4 1.0
Susi x6 4.0
Susi y2 3.0
Susi b4 2.0

我有三列,应该首先按“姓名”列排序,然后按“编号”列排序。我想用 Dictionary(使用 String 数组作为值,Double 作为键)执行此操作,然后按值排序,但我错过了按名称排序。

Map<Double, String[]> map = new HashMap<Double, String[]>();
map.put(5.0, {"Mike", "x6"});
System.out.println(map.get(5.0));

我不知道存储数据的最佳方式是什么。我也想知道 Java 8 中的解决方案。

最佳答案

首先,你应该让表格的每一行成为一个对象:

public class MyData {

private String name;
private String code;
private Double number;

public MyData(String name, String code, Double number) {
this.name = name;
this.code = code;
this.number = number;
}

public String getName() {
return name;
}

public String getCode() {
return code;
}

public Double getNumber() {
return number;
}

}

使用 Map<Double, String[]>并不代表您要实现的目标。 Map用于在唯一键和值之间创建链接。将每个数字与名称和代码相关联是否有意义?

一旦有了这个对象,就可以更容易地根据它的属性对它进行排序:

List<MyData> list = new ArrayList<>();
list.add(new MyData("Mike", "x6", 5.0));
list.add(new MyData("Mike", "b4 ", 3.0));
list.add(new MyData("Mike", "y2", 1.0));
list.add(new MyData("Tom", "y2", 4.5));
List<MyData> sortedList = list.stream()
.sorted(Comparator.comparing(MyData::getName).thenComparing(MyData::getNumber))
.collect(Collectors.toList());

关于java - 按多列排序,Java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32204594/

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