gpt4 book ai didi

java - 使用数字对对数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:28 24 4
gpt4 key购买 nike

好吧,假设我有一个看起来像这样的对象数组:对象(从,到)我想通过比较 from 和 to 来对该数组进行排序。我想做的一个例子:假设我有带有这些参数的对象(0,2) (2,4) (0,3) (4,5) (2,3)
我希望对象按以下顺序排序:(0,2) (0,3) (2,3) (2,4) (4,5)

我想比较前两个“from”变量,将较低的放在前面。如果它们相等,那么我要比较第二对数字。为此,我创建了一个比较方法

public int compare (EdgeI e1, EdgeI e2) {
if(e1.from < e2.from) { return -1; }
else if(e1.from == e2.from) {
if(e1.to < e2.to) { return -1; }
else if(e1.to == e2.to) { return 0; }
else if(e1.to > e2.to) { return 1; }
}
return 1;
}

这行得通吗?如果是这样,我将如何通过数组运行这种排序?感谢您的帮助。

编辑

    public class mySorter implements Comparator <EdgeI> {

public int compare(EdgeI e1, EdgeI e2) {
if(e1.from < e2.from) { return -1; }
else if(e1.from == e2.from) {
if(e1.to < e2.to) { return -1; }
else if(e1.to == e2.to) { return 0; }
else if(e1.to > e2.to) { return 1; }
}
return 1;
}

public void sorterM () {
Collections.sort(tet2, new mySorter());
}

}

我收到错误 Collections cannot be resolved, and tet2 cannot be resolved。 Tet2 是另一个类中公开的列表。

最佳答案

您可以做的是创建一个实现 Comparator<Edge> 的类.然后,您可以使用您的比较方法从接口(interface)实现该方法。

完成此操作后,您可以使用比较器对 Edge 的列表进行排序使用 Collections.sort() 的对象.

这看起来像这样:

import java.util.Collections;
import java.util.List;
import java.util.Comparator;

public class EdgeComparator implements Comparator<Edge> {
public int compare(Edge l, Edge r) { ... }
}

void yourCode() {
List<Edge> edges = ...;
Collections.sort(edges, new EdgeComparator());
//edges now contains the sorted edges
}

这是 Comparator 上的 javadoc和 Collections.sort .

如果你有一个数组而不是一个列表,你可以使用 Array.sortCollections.sort相同.

关于java - 使用数字对对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850461/

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