gpt4 book ai didi

java - 按单个数组上的 ArrayList 索引(行)对三个数组进行排序

转载 作者:行者123 更新时间:2023-12-01 11:42:18 25 4
gpt4 key购买 nike

在 ArrayList 中,我有三个 double[ ] 数组,我希望对第三个数组进行排序。第三个数组也未排序。

public class LevelList extends ArrayList<double[]> {

我的比较器 compares doubles :

import java.util.Comparator;

public class Linearize {
static final Comparator<double[]> RATIO_ORDER =
new Comparator<double[]>() {
@Override
public int compare(double[] d1, double[] d2) {
//Sort the ratios based on the fraction column 2
return Double.compare(d1[2], d2[2]);
}
};
}

然后我打电话:

Collections.sort(levelList, Linearize.RATIO_ORDER);
levelList.println();

但是,这只会导致 ArrayList 中数组的顺序排序。

在伪代码中,我希望实现的是:

For Each Row of ArrayList at Index i
Sort on Array 3

这样输入:

[1.0][2.0][2.1]
[2.0][5.0][2.2]
[1.0][5.0][1.0]

变成:

[1.0][5.0][1.0]
[1.0][2.0][2.1]
[2.0][5.0][2.2]

因为:2.2 > 2.1 > 1.0

最佳答案

我得到了想要的输出。我测试了以下代码。不明白为什么 levellist 必须扩展 arraylist,因此删除了它。

public class TestLevelSorting {
public static void main(String[] args) {

List<double[]> levelList = new ArrayList<double[]>();

double[] items1 = {1.0, 2.01, 2.1};
double[] items2 = {2.0, 5.0, 2.2};
double[] items3 = {1.0, 5.0, 1.0};

levelList.add(items1);
levelList.add(items2);
levelList.add(items3);

Collections.sort(levelList, Linearize.RATIO_ORDER);

for(double[] item : levelList){
System.out.println(Arrays.toString(item));
}
}
}

class Linearize {
static final Comparator<double[]> RATIO_ORDER = new Comparator<double[]>() {
@Override
public int compare(double[] d1, double[] d2) {
// Sort the ratios based on the fraction column 2
return Double.compare(d1[2], d2[2]);
}
};
}

关于java - 按单个数组上的 ArrayList 索引(行)对三个数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29429938/

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