java从一堆String\tInteger中取出Integer最大的两个值:
比如:a 45
a 20
b 15
d 10
a 45
要求取出:
a 45
b 15
java提取符合条件的数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀