java-用数字对对数组排序

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

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

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());
  }

}

我收到以下错误消息:集合无法解决,而tet2无法解决. Tet2是另一个类别中的List列表公众.

解决方法:

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

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

看起来像这样:

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
}

这是ComparatorCollections.sort上的javadoc.

如果您有数组而不是列表,则可以使用与Collections.sort相同的方式使用Array.sort.

上一篇:[Java Spring MVC] Paging and sorting DTOs


下一篇:java-双链表的排序方法