gpt4 book ai didi

java - 简化自定义类型上 Collections.sort 的实现

转载 作者:行者123 更新时间:2023-12-02 00:03:52 25 4
gpt4 key购买 nike

我需要对我当前正在执行的工作列表进行排序:

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>>

是否可以避免传递比较器?

最佳答案

你可以这样做:

public class Job implements Comparable<Job> { // a job is comparable to another 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 compareTo(Job j) {
return this.order - j.order; // here you specify how you want your jobs sorted
}
}

关于java - 简化自定义类型上 Collections.sort 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292571/

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