列表排序<Object>
Sorting of List<Object>
我需要按产品的高到低和低到高对产品进行排序 Price.I 已经使用以下方法从低到高 code.But 不知道如何实现从高到低?
非常感谢您的回答...
public static Comparator<Restaurant_Beam> strPriceFilterL2H = new Comparator<Restaurant_Beam>() {
@Override
public int compare(Restaurant_Beam lhs, Restaurant_Beam rhs) {
int CompareResult = 0;
if (Config.L2HFilterClicked == "L2H") {
CompareResult = (int) Math.round(Double.parseDouble(lhs.getIG_SALES_PRICE()) - Double.parseDouble(rhs.getIG_SALES_PRICE()));
}
//Used else if for H2L.But did not get it as perfect
else if (Config.L2HFilterClicked == "H2L") {
CompareResult = (int) Math.round(Double.parseDouble(lhs.getIG_SALES_PRICE()) + Double.parseDouble(rhs.getIG_SALES_PRICE()));
}
return CompareResult;
}
};
将第二个比较表达式更改为这个:
CompareResult = (int) Math.round(Double.parseDouble(Double.parseDouble(rhs.getIG_SALES_PRICE()) - Double.parseDouble(lhs.getIG_SALES_PRICE()));
另外我想指出几点
- 考虑与 epsilon
进行 Double
比较
- 在比较对象之前检查对象是一个好习惯
- 每次比较都解析,真是糟糕的设计。如果你提前在某个地方解析值会更好,考虑改变你的类型。目前效率不高。
我需要按产品的高到低和低到高对产品进行排序 Price.I 已经使用以下方法从低到高 code.But 不知道如何实现从高到低?
非常感谢您的回答...
public static Comparator<Restaurant_Beam> strPriceFilterL2H = new Comparator<Restaurant_Beam>() {
@Override
public int compare(Restaurant_Beam lhs, Restaurant_Beam rhs) {
int CompareResult = 0;
if (Config.L2HFilterClicked == "L2H") {
CompareResult = (int) Math.round(Double.parseDouble(lhs.getIG_SALES_PRICE()) - Double.parseDouble(rhs.getIG_SALES_PRICE()));
}
//Used else if for H2L.But did not get it as perfect
else if (Config.L2HFilterClicked == "H2L") {
CompareResult = (int) Math.round(Double.parseDouble(lhs.getIG_SALES_PRICE()) + Double.parseDouble(rhs.getIG_SALES_PRICE()));
}
return CompareResult;
}
};
将第二个比较表达式更改为这个:
CompareResult = (int) Math.round(Double.parseDouble(Double.parseDouble(rhs.getIG_SALES_PRICE()) - Double.parseDouble(lhs.getIG_SALES_PRICE()));
另外我想指出几点
- 考虑与 epsilon 进行
- 在比较对象之前检查对象是一个好习惯
- 每次比较都解析,真是糟糕的设计。如果你提前在某个地方解析值会更好,考虑改变你的类型。目前效率不高。
Double
比较