TOP N (java)
来源:互联网 发布:dns 一个域名多个ip 编辑:程序博客网 时间:2024/06/05 08:03
返回最大的N个值
//返回最大n static List<AlarmMessage> getTopN(int n,List<AlarmMessage> list){ if(list == null || list.isEmpty() || n < 1){ return new ArrayList<AlarmMessage>(); } if(n > list.size()){ n = list.size(); } try{ //选出Id最大的n条,也就是最新的n条message AlarmMessage[] arr = new AlarmMessage[n]; for(AlarmMessage alarmMessage:list){ if(arr[0] == null){//数组还没填满 if(arr[arr.length-1] == null){//空数组 arr[arr.length-1] = alarmMessage;//放在最后 continue; }else{//非空数组 for(int j = 0;j<arr.length-1;j++){//整体往前移动一格 arr[j] = arr[j+1]; } arr[arr.length-1] = null;//最后一个设置为null } } for(int i=arr.length-1;i>-1;i--){ if(arr[i] == null){ if(i == arr.length-1){//最后一个为null,说明是数组长度没满,向前移位了一格 }else{//碰到null,说明是最大值 arr[i+1] = alarmMessage; break; } }else{ if(alarmMessage.getId() > arr[i].getId()){//比当前位置的值要大 if(i == 0){//比第一个大 if(i < arr.length-1){ arr[i+1] = arr[i]; } arr[0] = alarmMessage; break; }else if(i == arr.length-1){//跟数组中最后一个(也就是最小)比较 //不做处理,继续往前查找 }else if(i < arr.length-1){ arr[i+1] = arr[i];//让当前位置的对象覆盖后面的 } }else{//比当前位置的对象小,结束 if(i < arr.length-1){//前面的都大,到此结束 arr[i+1] = alarmMessage; break; }else if(i == arr.length-1){//比最后一个还小 break; } } } } } return Arrays.asList(arr); }catch (Exception e){ return new ArrayList<AlarmMessage>(); } }
0 0
- TOP N (java)
- Spark:Java实现Top N
- java 代码实现 Top N 问题
- Spark中实现TOP N (Java版本)
- Spark:Java实现分组取Top N
- top n
- top n
- 分组Top N问题(一) - java实现Top n算法基础
- Top-N算法的实现(Java版)
- SELECT TOP N 问题
- oracle top n 问题
- oracle top n 问题
- Hiberate top n
- TOP n [PERCENT]用法
- 实现Oracle Top N
- Oracle Top N
- SELECT TOP N 问题
- Top N 怎么办
- 利用缓存实现APP端与服务器接口交互的Session控制
- Service基础之bind方式启动Service
- 关于Oracle数据库的用户权限问题
- openCV学习之提取外轮廓
- LoadRunner检查点使用小结
- TOP N (java)
- 02 自定义网站的根目录
- friend class & function
- MATLAB画图-legend,box用法
- mybatis一对多配置问题
- Loadrunner集合点Rendezvous知识
- 称砝码
- viewPager和listview嵌套冲突
- flask之行(flask环境安装)