半陌 2017-11-14 07:25 采纳率: 0%
浏览 2218
已采纳

java提取符合条件的数据

java从一堆String\tInteger中取出Integer最大的两个值:
比如:a 45
a 20
b 15
d 10
a 45
要求取出:
a 45
b 15

  • 写回答

4条回答 默认 最新

  • 007Detective 2017-11-14 14:53
    关注

    我写的有些复杂,不过我都写注释了,你可以简略一下

     class Result{
        String str;
        int maxNum;
    
        public void setStr(String str) {
            this.str = str;
        }
    
    
        public void setMaxNum(int maxNum) {
            this.maxNum = maxNum;
        }
    }
    /**
     * 定义一个map<String,List>,
     * String就是根据分类的字符串,List就是这个字符串跟着的int组成的list
     * 然后把每个list排序,取出最大的值就行
     */
    public class FindMax {
        /**
         * 这是初始化map,就是给map里塞值
         * @param str 输入的字符串
         * @param num 紧跟着的int数值
         */
        public Map getMap(String str,int num){
            //先输入数据,对String一样的int,将其组成一个list
            Map<String,List> map = new HashMap<String,List>();
            List<Integer> list = new ArrayList<Integer>();
    
            if(map.containsKey(str)){
                list = map.get(str);
    
            }else {
                list = new ArrayList<Integer>();
            }
            list.add(num);
            map.put(str,list);
            return map;
        }
        /**
         * 然后就是把结果返回
         */
        public List<Result> getTheMax(Map map){
            //这个输入数据可以再抽象出一个方法来,我这边随意写的
            String str = "Test";
            int num = 1;
    
    
            map = getMap(str,num);
            Iterator entries = map.entrySet().iterator();
            List<Integer> list = new ArrayList<Integer>();
            List<Result> resultList = new ArrayList<Result>();
            String resultStr = null;
            int resultNum = 0;
            while (entries.hasNext()){
                Map.Entry entry = (Map.Entry) entries.next();
                resultStr =(String )entry.getKey();
                list = (List)entry.getValue();
                Collections.sort(list);
                resultNum = list.get(list.size() - 1);
                //这时候已经得到一对值了,然后把它们组装成Result,放到resultList里去
                Result result = new Result();
                result.setStr(resultStr);
                result.setMaxNum(resultNum);
                resultList.add(result);
            }
            return resultList;
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器