簡化實施Collections.sort我需要梳理工作的名單,我現在做的:自定義類型
List<Job> jobs = new ArrayList<Job>();
Job job0 = new Job("a", 1, Arrays.asList("t0"));
Job job1 = new Job("a", 2, Arrays.asList("t0"));
jobs.add(job0);
jobs.add(job1);
Comparator<Job> comparator = new Comparator<Job>() {
@Override
public int compare(Job o1, Job o2) {
if (o1.getOrder() > o2.getOrder()) {
return 1;
}
return 0;
}
};
Collections.sort(jobs, comparator);
其中:
public class Job {
private String path;
private List<String> targets;
private final int order;
public Job(String path, int order, List<String> targets) {
this.path = path;
this.order = order;
this.targets = targets;
}
...
public int getOrder() {
return order;
}
}
我想對此進行簡化。所以,我曾嘗試:
public class Job implements Comparable<Integer> {
private String path;
private List<String> targets;
private final int order;
public Job(String path, int order, List<String> targets) {
this.path = path;
this.order = order;
this.targets = targets;
}
public int compareTo(Integer o) {
// TODO Auto-generated method stub
return 0;
}
}
和
List<Job> jobs = new ArrayList<Job>();
Collections.sort(jobs);
但得到:
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<Job>). The inferred type Job is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
是否有可能避免將一個比較?
你需要'Job'實現可比''(你爲什麼要把它實現可比''?)。 –
fge
這是a.compareTo(b)= -b.compareTo(a)的要求,您必須在相反的情況下返回-1,當您返回+1時,反之亦然。 –
@PeterLawrey如果你失敗會發生什麼?只是一個破碎的排序順序? –