按一个字段的降序对对象排序

时间:2018-02-06 03:54:58

标签: java sorting guava comparable multimap

我有一个多图,其中包含一堆键和值。

private final Multimap<String, Process> processById = TreeMultimap.create();

现在对于相同的密钥,我可以拥有一堆Process,这就是我在这里使用multimap的原因。现在我需要按Process的降序对endTime对象进行排序。对于迭代List<Process>时地图中的每个键,它应按endTime的降序打印流程对象。所以我在这里实现了Comparable接口。

public final class Process implements Comparable<Process> {
  private final String clientId;
  private final long endTime;
  // .. more fields

  //... constructor, getters, toString methods

  @Override
  public int compareTo(Process o) {
    // is this logic right here?
    return Long.compare(this.endTime, o.endTime) * (-1);
  }
}

我的问题是 - 这是正确的做法,还是我的逻辑在这里错了?

Process process = getProcess(task);
String id = task.getId();
// populate multimap here
processById.put(id, process);

1 个答案:

答案 0 :(得分:1)

如果你必须乘以-1,最好只是反转字段。