Haspmap top出最大的100个,或者最小100个

QQ785468931 2012-06-15 02:57:36
特别是最小的,怎么写
...全文
259 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ785468931 2012-06-26
  • 打赏
  • 举报
回复
那我看看了~~~~~~~~~
QQ785468931 2012-06-21
  • 打赏
  • 举报
回复
这个需要键值的~~~怎么用treemap~~~~
qeryui 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

这个需要键值的~~~怎么用treemap~~~~
[/Quote]
你怎么知道treemap没有键值,你看过api了?
QQ785468931 2012-06-21
  • 打赏
  • 举报
回复
new一个长度为101的ArrayList,从HashMap里取值,2分插入ArrayList.根据你需要最大或最小,决定排序规则。当ArrayList长度超过100时,就删除最后一个。

====
为什么要删除最后一个???
qeryui 2012-06-19
  • 打赏
  • 举报
回复
==!直接用treemap不就行了。。。还有tailmap方法。。。。
QQ785468931 2012-06-19
  • 打赏
  • 举报
回复
而且我要top出域名数*100也不行,top到的是所有域名的前100~~
QQ785468931 2012-06-19
  • 打赏
  • 举报
回复
排序了top出前100URl很容易~但现在问题是每个域名都要top到前100URL~map的key里是域名+URL,怎么实现???
QQ785468931 2012-06-19
  • 打赏
  • 举报
回复
重点是前100啊~~
huage 2012-06-18
  • 打赏
  • 举报
回复
	
public static List<Integer> getList(List<Integer> list){
Collections.sort(list, new Comparator<Integer>() {

@Override
public int compare(Integer o1, Integer o2) {
return o1.intValue()-o2.intValue() ; //这里可以根据你的需要升序还是降序
}
});
return list ;

}

QQ785468931 2012-06-18
  • 打赏
  • 举报
回复
是啊~
你就设定一个阀值,比如说某个域名的map个数超过500了,你就删除200,剩下300
然后超过了500,又删200,
这样就可以保证map不会撑爆
ZZZ5512536 2012-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
new一个长度为101的ArrayList,从HashMap里取值,2分插入ArrayList.根据你需要最大或最小,决定排序规则。当ArrayList长度超过100时,就删除最后一个。

这样就避免了,总的Map如果包含成千上万条数据的时候的海量两两比较。不需要对所有数据进行排序
[/Quote]


我觉得你还是把你的代码贴上来吧...
QQ785468931 2012-06-18
  • 打赏
  • 举报
回复
但是一般都会加上e1,e2什么的~~
ZZZ5512536 2012-06-18
  • 打赏
  • 举报
回复
Collections.sort就是对list集合里的元素进行排序的方法啊.

QQ785468931 2012-06-18
  • 打赏
  • 举报
回复
是啊,这样能实现排序吗??
ZZZ5512536 2012-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
Comparator comp=Collections.reverseOrder(); Collections.sort(cntvec, comp);
[/Quote]

你这个就是逆序吧
QQ785468931 2012-06-18
  • 打赏
  • 举报
回复
我都不明白他为什么会帮我逆序下啊~~~
QQ785468931 2012-06-18
  • 打赏
  • 举报
回复
Comparator comp=Collections.reverseOrder();
Collections.sort(cntvec, comp);
结贴是美德 2012-06-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

new一个长度为101的ArrayList,从HashMap里取值,2分插入ArrayList.根据你需要最大或最小,决定排序规则。当ArrayList长度超过100时,就删除最后一个。

这样就避免了,总的Map如果包含成千上万条数据的时候的海量两两比较。不需要对所有数据进行排序
[/Quote]


这招高~
RDroid 2012-06-15
  • 打赏
  • 举报
回复
new一个长度为101的ArrayList,从HashMap里取值,2分插入ArrayList.根据你需要最大或最小,决定排序规则。当ArrayList长度超过100时,就删除最后一个。

这样就避免了,总的Map如果包含成千上万条数据的时候的海量两两比较。不需要对所有数据进行排序
ZZZ5512536 2012-06-15
  • 打赏
  • 举报
回复
你HashMap里value是存的什么类型?
我个人认为可以使用

List list = new ArrayList();
for(Object o:map.values()){
list.add(o);
}


如果是基本类型的话,可以使用Collections.sort(list) 进行排序,然后截取。
自定义类型的话,可以类实现Comparable接口,或者使用Collections.sort(list, c);c为自定义的比较器Comparator.
加载更多回复(2)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧