按一个字段的降序对对象进行排序
sort an object in descending order of one field
我有一个 multimap,其中包含一堆键和值。
private final Multimap<String, Process> processById = TreeMultimap.create();
现在对于同一个键我可以有一堆 Process
所以这就是我在这里使用 multimap 的原因。现在我需要按照 endTime
的降序对 Process
对象进行排序。对于映射中的每个键,当我迭代 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,最好只反转字段。
我有一个 multimap,其中包含一堆键和值。
private final Multimap<String, Process> processById = TreeMultimap.create();
现在对于同一个键我可以有一堆 Process
所以这就是我在这里使用 multimap 的原因。现在我需要按照 endTime
的降序对 Process
对象进行排序。对于映射中的每个键,当我迭代 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,最好只反转字段。