【发布时间】:2014-11-30 09:28:22
【问题描述】:
我正在检查一个想知道如何使用Comparator 的post 和一个橙色 水果一直是第一个。从帖子中缺少 toString 方法,所以我添加到我的代码中
@Override
public String toString(){
return fruitName +" " + fruitDesc;
}
帖子给出的答案是
使用 Collection.sort
Collections.sort(fruits, new Comparator<Fruit>() {
@Override
public int compare(Fruit o1, Fruit o2) {
if (o1.getFruitName() != null && o1.getFruitName().equalsIgnoreCase("orange")){
return -1;
}
if (o2.getFruitName() != null && o2.getFruitName().equalsIgnoreCase("orange")){
return 1;
}
return o1.getFruitName().compareTo(o2.getFruitName());
}
});
输出:
Orange Orange description
Apple Apple description
Banana Banana description
Pineapple Pineapple description
我在想为什么不Arrays.parallelSort 我听说过很好的东西
使用Arrays.parallelSort 代码
Fruit[] arrayFruits = fruits.stream().toArray(Fruit[]::new);
Arrays.parallelSort(arrayFruits, (Fruit o1, Fruit o2) -> {
if (o1.getFruitName() != null && o1.getFruitName().equalsIgnoreCase("orange")){
return -1;
}
if (o2.getFruitName() != null && o2.getFruitName().equalsIgnoreCase("orange")){
return 1;
}
return o1.getFruitName().compareTo(o2.getFruitName());
});
输出:
Pineapple Pineapple description
Apple Apple description
Orange Orange description
Banana Banana description
对我来说排序就是排序,为什么不同的答案形成不同的方法?
【问题讨论】:
-
@ankur-singhal 谢谢你,但我已经检查过了
-
@KickButtowski:你确定你正确地运行了程序。无论我输入值的顺序如何,
Orange都会排在第一位。 -
@Ya 我确定你看到帖子了
-
对我来说也一样:无法复制它。橙色是第一位的。