[原创]Map应用___分享一下Map 排序
2010-08-23 23:10
204 查看
目的:将一个java Map("String","ActionStatResult")根据其value中ActionStatResult的字段来排序,并得到该对象的倒序 List<ActionStatResult>;
思路:1. 用map.values()分离出Map中的value值对象,并转化为List<ActionStatResult>
2. 对List<ActionStatResult>进行排序,可参考Collections.sort(List,Comparator)排序;
参考代码如下:
public List<ActionStatResult> mapArrayListSort(Map<String,ActionStatResult> map ){
//将Map中的value(其中放着ActionStatResult)值提取出来并转化为一个List对象
List<ActionStatResult> actionList = new ArrayList<ActionStatResult>(map.values());
// sort排序, 其中用匿名内部类比较器..
Collections.sort(actionList,new Comparator<ActionStatResult>(){
@Override
public int compare(ActionStatResult o1, ActionStatResult o2) { //倒序排列
int flag = Long.valueOf(o2.getMaxExecuteTime()).compareTo(Long.valueOf(o1.getMaxExecuteTime()));
if (flag == 0) {
return Long.valueOf(o2.getExecuteCount()).compareTo(Long.valueOf(o1.getExecuteCount()));
}else{
return flag;
}
}
});
return actionList;
}
//例:ActionStatResult对象
public class ActionStatResult {
private String actionClassName; //action类名
private String actionMethodName; //action 方法名
private double avgExecuteTime; // 执行平均时长(毫秒)
private long maxExecuteTime = Long.MIN_VALUE; // 执行最长时长(毫秒)
private long minExecuteTime = Long.MAX_VALUE; // 执行最短时长(毫秒)
private long executeCount; // 执行次数
//get- and set- ....
}
在这里与大家分享一下本人在实际开发过程有用的小模块,有更好的做法或有什么想法,可以大家进行交流。。。
思路:1. 用map.values()分离出Map中的value值对象,并转化为List<ActionStatResult>
2. 对List<ActionStatResult>进行排序,可参考Collections.sort(List,Comparator)排序;
参考代码如下:
public List<ActionStatResult> mapArrayListSort(Map<String,ActionStatResult> map ){
//将Map中的value(其中放着ActionStatResult)值提取出来并转化为一个List对象
List<ActionStatResult> actionList = new ArrayList<ActionStatResult>(map.values());
// sort排序, 其中用匿名内部类比较器..
Collections.sort(actionList,new Comparator<ActionStatResult>(){
@Override
public int compare(ActionStatResult o1, ActionStatResult o2) { //倒序排列
int flag = Long.valueOf(o2.getMaxExecuteTime()).compareTo(Long.valueOf(o1.getMaxExecuteTime()));
if (flag == 0) {
return Long.valueOf(o2.getExecuteCount()).compareTo(Long.valueOf(o1.getExecuteCount()));
}else{
return flag;
}
}
});
return actionList;
}
//例:ActionStatResult对象
public class ActionStatResult {
private String actionClassName; //action类名
private String actionMethodName; //action 方法名
private double avgExecuteTime; // 执行平均时长(毫秒)
private long maxExecuteTime = Long.MIN_VALUE; // 执行最长时长(毫秒)
private long minExecuteTime = Long.MAX_VALUE; // 执行最短时长(毫秒)
private long executeCount; // 执行次数
//get- and set- ....
}
在这里与大家分享一下本人在实际开发过程有用的小模块,有更好的做法或有什么想法,可以大家进行交流。。。
相关文章推荐
- 分享一下findBy的应用案例
- [置顶] 【原创分享】嵌入式linux应用之内核移植定制篇-前篇(linux-3.8.12 mini2440)--20130824
- 为应用添加分享到新浪微博 可以排序
- [置顶] 【原创分享】嵌入式linux应用之内核移植定制篇-后篇(修复部分问题)(linux-3.8.12 mini2440)
- 算法实战:根据Key或Value对Map进行排序及其应用
- 【分享】【原创开源应用第4期】给ili9488,RA8875类显示屏的emWin底层增加DMA加速方案
- 关于GridView中自定义分页、单选、多选、排序、自增列的简单应用(原创)
- 分享两遍不错的文章,有关快速排序,用JS写的,有需要的朋友可以参考一下
- Android第三方应用分享到微信朋友圈,微信好友(原创)
- 算法实战:根据Key或Value对Map进行排序及其应用
- [原创]DATAGRID的应用(双向排序,包括checkbox控件,分页,修改,保存,取消)
- (原创)分享一下最近搞的tiny210V2从nand启动支持(K9GAG08U0F).
- 【原创分享】嵌入式linux应用之U-BOOT移植定制篇--20130822
- 分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用
- 专知原创和整理了一些中英文机器学习从入门到精通的资料,和大家分享一下
- 【原创分享】嵌入式linux应用之内核移植定制篇-后篇(修复部分问题)(linux-3.8.12 mini2440)
- [原创]BCB的FORM1与FORM2之间的变量传递及应用,学会后分享给大家.
- [置顶] 【原创分享】嵌入式linux应用之U-BOOT移植定制篇--20130822
- 【原创分享】嵌入式linux应用之内核移植定制篇-前篇(linux-3.8.12 mini2440)--20130824
- 分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用