半陌 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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀