java Map的问题取得最大value对应的key

原题是这样的,有一个int【】,把数组从中间断开,前后两部分相加,所得两个和相乘,求最大积对应的数组中断开的那个元素我的做法是求一个总的和,写了一个方法,获得一个Map,... 原题是这样的,有一个int【】,把数组从中间断开,前后两部分相加,所得两个和相乘,求最大积对应的数组中断开的那个元素

我的做法是求一个 总的和,写了一个方法,获得一个Map,在方法中传一个数组,for循环把所有的对应元素的index和积作为一个map里的一个元素。
现在的问题是怎么从map中把value最大的对应的key取到
Colletions.max可以取得集合中的最大元素,map作为参数,实现comparator接口?有什么简单的方法没
获得了map,我可以定义方法获得value的最大值,但是要取得最大值时的key,又需要遍历,感觉很麻烦啊
展开
 我来答
198901245631
推荐于2016-11-26 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1748万
展开全部

实现思路:先排序,之后取出最大的一个即可。

import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MaxMapDemo {

public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 8);
map.put(3, 12);
map.put(5, 53);
map.put(123, 33);
map.put(42, 11);
map.put(44, 42);
map.put(15, 3);

System.out.println(getMaxKey(map));
System.out.println(getMaxValue(map));

}

/**
* 求Map<K,V>中Key(键)的最大值
* @param map
* @return
*/
public static Object getMaxKey(Map<Integer, Integer> map) {
if (map == null) return null;
Set<Integer> set = map.keySet();
Object[] obj = set.toArray();
Arrays.sort(obj);
return obj[obj.size()-1];
}

/**
* 求Map<K,V>中Value(值)的最大值
* @param map
* @return
*/
public static Object getMaxValue(Map<Integer, Integer> map) {
if (map == null) return null;
Collection<Integer> c = map.values();
Object[] obj = c.toArray();
Arrays.sort(obj);
return obj[obj.size()-1];
}

}
小布什么
2013-04-01 · TA获得超过142个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:138万
展开全部
其实你可以用一个类似冒泡算法来解决的.
从第一个开始断开flag=1 算乘积 result 再设置 max = result
从第二个断开,算乘积result 如果 result>max则把flag换成2,如果result<max则flag不变
以此类推
最后返回flag就可以了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
西亚文库
2013-04-01
知道答主
回答量:23
采纳率:0%
帮助的人:4.8万
展开全部
这个好像是遍历循环,然后看。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是小白啊2k
2013-04-01 · TA获得超过2566个赞
知道小有建树答主
回答量:1183
采纳率:0%
帮助的人:1167万
展开全部
遍历一遍取个最大值不行么?
追问
对map迭代再取最大值?怎么取得当前的key
追答
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap map = new HashMap();
map.put(1, 20);
map.put(3, 53.2);
map.put(4,12);
double maxV=0;
int maxK=-1;
Iterator keys = map.keySet().iterator();
while(keys.hasNext()){
Object key = keys.next();
double value = Double.parseDouble(map.get(key).toString());
if(value>maxV){
maxV=value;
maxK=Integer.parseInt(key.toString());
}
}
System.out.println(maxK);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式