list 排序 急!

文刀一撇 2017-01-22 05:28:54
条件
List<Map<string ,object>> list = [{a=5,b=7,c=8,d=12},{a=12,b=34,c=9,d=15},{a=12,b=34,c=9,d=15}]

String keyorder[]={b,c,d,a};
如何排序??将list中的map的key 值按照bcda 的顺序排列
最终要获取的结果:
list = [{b=7,c=8,d=12,a=5},{b=34,c=9,d=15,a=12},{b=34,c=9,d=15,a=12}]


...全文
283 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbqqqbq 2017-01-23
  • 打赏
  • 举报
回复
List<Map<String ,Object>> listArry =new ArrayList<Map<String, Object>>(){}; Map<String ,Object> objectMap1=new HashMap<String, Object>(); objectMap1.put("a",5); objectMap1.put("b",7); objectMap1.put("c",8); objectMap1.put("d",12); listArry.add(objectMap1); Map<String ,Object> objectMap2=new HashMap<String, Object>(); objectMap2.put("a",12); objectMap2.put("b",34); objectMap2.put("c",9); objectMap2.put("d",15); listArry.add(objectMap2); Map<String ,Object> objectMap3=new HashMap<String, Object>(); objectMap3.put("a",12); objectMap3.put("b",34); objectMap3.put("c",9); objectMap3.put("d",15); listArry.add(objectMap3); for (Map<String ,Object> map :listArry) { //这里将map.entrySet()转换成list List<Map.Entry<String,Object>> list = new ArrayList<Map.Entry<String,Object>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list, new Comparator<Map.Entry<String, Object>>() { String sortString="bcda"; public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) { return (sortString.indexOf(o1.getKey())>sortString.indexOf(o2.getKey())?0:1); } }); } for (Map<String ,Object> map :listArry) { Set<String> keySet = map.keySet(); Iterator<String> iter = keySet.iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + map.get(key)); } }
Defonds 2017-01-23
  • 打赏
  • 举报
回复
楼主自己动手写一下吧,实在没思路可以百度。 别人都很忙不可能动手去给你写 demo,最多给你指个方向
文刀一撇 2017-01-22
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
这个简单。 自己实现一个 Comparator<T>,对 map 的 key 值按照 bcda 的顺序比较。 然后执行
Collections.sort(list, 你的 Comparator 实现);
就是你想要的顺序了。 list 逆序排列用:
Collections.reverse(list);
Comparator 实现的具体代码如何写??
Defonds 2017-01-22
  • 打赏
  • 举报
回复
这个简单。
自己实现一个 Comparator<T>,对 map 的 key 值按照 bcda 的顺序比较。
然后执行
Collections.sort(list, 你的 Comparator 实现);

就是你想要的顺序了。
list 逆序排列用:
Collections.reverse(list);
李德胜1995 2017-01-22
  • 打赏
  • 举报
回复
用TreeMap(Comparator<? super K> comparator) 这个构造器,判断键是否等于“a”,如果是就返回-1

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧