这个问题在这里已有答案:
我想依次按照比较器“c”从ArrayList返回前k个ratables。所以第一个元素是根据比较器c的第一个元素。
这是我的代码
public static ArrayList<Ratable> getTopK(ArrayList<Ratable> list, int k, Comparator c) {
ArrayList<Ratable> ratables;
if (c.toString().contains("AlphabeticalComparator")) {
ratables = AlphabeticalComparator.compare(list);
} else if (c.toString().contains("NumberOfRatingsComparator")) {
ratables = NumberOfRatingsComparator.compare(list);
} else {
Scanner in = new Scanner(System.in);
System.out.println("Enter Extra Reviews and value of extra ratings: ");
int extraReviews = in.nextInt();
double extraRatings = in.nextDouble();
ratables = BayesianAverageComparator.compare(list, extraReviews, extraRatings);
}
ArrayList<Ratable> subList = new ArrayList<Ratable>(ratables.subList(0, k));
return subList;
}
}
我的自动取款机告诉我它没有以我需要的方式订购?
你可以使用Collections.sort(list, comparator)
。