使用了下面这个方法在本地已经实现了排序功能,但是把程序发布到服务器上面就不响应了,方法照常走,但是排序功能没有体现出来,问一下是什么情况?服务器上面也没有任何报错。
Collections.sort(list, new ListMapSortComparator("distance","desc"){});
public abstract class ListMapSortComparator implements Comparator<Map<String, Object>> { private String key; private String order; public ListMapSortComparator(String key,String order) { System.out.println("--"); this.key = key; this.order = order; } /* * (non-Javadoc) * * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ public int compare(Map<String, Object> o1, Map<String, Object> o2){ int b1 = (Integer) o1.get(key); int b2 = (Integer) o2.get(key); if (order.equals("asc")) { System.out.println("asc"); if (b2 != 0) { if(Math.min(b1, b2) == b2){ return 1; } } }else{ System.out.println("desc"); if (b2 != 0) { if(Math.min(b1, b2) == b1){ return 1; } } } return 0; }
解决方案:10分
你确认服务器上面和你的本地版本一样啊。
if (order.equals(“asc”)) {
System.out.println(“asc”);
if (b2 != 0) {
if(Math.min(b1, b2) == b2){
return 1;
}
}
}else{
System.out.println(“desc”);
if (b2 != 0) {
if(Math.min(b1, b2) == b1){
return 1;
}
}
}
这里面加上log 看看能否能够打印出来。
if (order.equals(“asc”)) {
System.out.println(“asc”);
if (b2 != 0) {
if(Math.min(b1, b2) == b2){
return 1;
}
}
}else{
System.out.println(“desc”);
if (b2 != 0) {
if(Math.min(b1, b2) == b1){
return 1;
}
}
}
这里面加上log 看看能否能够打印出来。
解决方案:10分
输出一下信息,排错
解决方案:40分
为啥ListMapSortComparator是个抽象类…还有map的泛型不是String,Integer….还有value是null的会出错
还有为啥要b2!=0这样判断….
好像跟出错原因都没什么关系~
还有为啥要b2!=0这样判断….
好像跟出错原因都没什么关系~