按照value里gmn_no进行排序如果相等按照di_no排序
TreeMap<Integer, Map> zeroTreeMap = new TreeMap<Integer, Map>(zeroList);
zeroTreeMap 里值为
{
1={gmn_no=1,di_no=3,scr_no=3}
2={gmn_no=3,di_no=1,scr_no=3}
3={gmn_no=2,di_no=3,scr_no=3}
4={gmn_no=1,di_no=2,scr_no=3}
}
先创建一个list用来存放排序后的值
List<Map.Entry<Integer, Map>> list = new ArrayList<Map.Entry<Integer, Map>>(zeroTreeMap.entrySet());
重写Comparator方法进行排序
- 返回负数表示:o1 小于o2,
- 返回0 表示:o1和o2相等,
- 返回正数表示:o1大于o2。
Collections.sort(list, new Comparator<Map.Entry<Integer, Map>>() {
@Override
public int compare(Entry<Integer, Map> o1, Entry<Integer, Map> o2) {
// TODO Auto-generated method stub
if ((Integer) o1.getValue().get("gmn_no") < (Integer) o2.getValue().get("gmn_no")) {
return -1;
}
if ((Integer) o1.getValue().get("gmn_no") > (Integer) o2.getValue().get("gmn_no")) {
return 1;
}
if (o1.getValue().get("gmn_no") == o2.getValue().get("gmn_no")) {
if ((Integer) o1.getValue().get("di_no") < (Integer) o2.getValue().get("di_no")) {
return -1;
}
if ((Integer) o1.getValue().get("di_no") > (Integer) o2.getValue().get("di_no")) {
return 1;
}
}
return 0;
}
});
完整代码
private List<Entry<Integer, Map>> getZeroTreeMapOrderBy(List<Integer> revLista, Integer systemNoa,
String tableName) {
List<Integer> revList = revLista;
Integer systemNo = systemNoa;
Map<Integer, Map> zeroList = genchiListDatailMapper.selectAllTable(0, systemNo,
tableName);
zeroList.remove(null);
TreeMap<Integer, Map> zeroTreeMap = new TreeMap<Integer, Map>(zeroList);
for (int i = 0; i < revList.size(); i++) {
Map<Integer, Map> saList = genchiListDatailMapper.selectAllTable(revList.get(i), systemNo, tableName);
for (Integer key : saList.keySet()) {
zeroTreeMap.put(key, saList.get(key));
}
}
List<Map.Entry<Integer, Map>> list = new ArrayList<Map.Entry<Integer, Map>>(zeroTreeMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Map>>() {
@Override
public int compare(Entry<Integer, Map> o1, Entry<Integer, Map> o2) {
// TODO Auto-generated method stub
if ((Integer) o1.getValue().get("gmn_no") < (Integer) o2.getValue().get("gmn_no")) {
return -1;
}
if ((Integer) o1.getValue().get("gmn_no") > (Integer) o2.getValue().get("gmn_no")) {
return 1;
}
if (o1.getValue().get("gmn_no") == o2.getValue().get("gmn_no")) {
if ((Integer) o1.getValue().get("di_no") < (Integer) o2.getValue().get("di_no")) {
return -1;
}
if ((Integer) o1.getValue().get("di_no") > (Integer) o2.getValue().get("di_no")) {
return 1;
}
}
return 0;
}
});
sigInfo = genchiListDatailMapper.selectRevMSigDetail(0, systemNo, tableName);
return list;
}