Collections排序sort排序list,單個及多條件排序
阿新 • • 發佈:2018-12-24
單條件排序
@SuppressWarnings("unchecked") public static void sort(List<JSONObject> list, final String key, final String orderby, final boolean isnumber) { Collections.sort(list, new Comparator() { @Override public int compare(Object a, Object b) { int ret = 0; try { if (OrderByEnum.DESC.name().equalsIgnoreCase(orderby)) { // 倒序 if (isnumber) { ret = Double.valueOf(((JSONObject) b).getString(key)) .compareTo(Double.valueOf(((JSONObject) a).getString(key))); } else{ ret = ((JSONObject)b).getString(key) .compareTo(((JSONObject)a).getString(key)); } }else { // 正序 if (isnumber) { ret = Double.valueOf(((JSONObject) a).getString(key)) .compareTo(Double.valueOf(((JSONObject) b).getString(key))); }else { ret = ((JSONObject) a).getString(key) .compareTo(((JSONObject) b).getString(key)); } } } catch (Exception e) { log.error("Sort error: ", e); e.printStackTrace(); } return ret; } }); }
多條件排序
Collections.sort(staffList, new Comparator<StaffElement>() { public int compare(StaffElement arg0, StaffElement arg1) { // 置業管家按成交套數降序排序 if (arg1.getMonthCjNumber() > arg0.getMonthCjNumber()) { return 1; } else if (arg0.getMonthCjNumber() > arg1.getMonthCjNumber()) { return -1; } else if (arg0.getMonthCjNumber() == arg1.getMonthCjNumber()) { // 如果成交套數相等的話就按照響應速度升序 if (arg0.getAnswerRate() > arg1.getAnswerRate()) { //如果響應速度等於0就拍最後面 if(arg1.getAnswerRate()==0){ return -1; } return 1; } else if (arg1.getAnswerRate() > arg0.getAnswerRate()) { //如果響應速度等於0就拍最後面 if(arg0.getAnswerRate()==0){ return 1; } return -1; } } return 0; } });