怎么对Map中的value排序

wysunning 2009-02-12 08:42:04


public class testAction extends ActionSupport {
Map<User, Integer> map = new HashMap<User, Integer>();

public Map<User, Integer> getMap() {
return map;
}

public void setMap(Map<User, Integer> map) {
this.map = map;
}

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
User user = new User();
user.setEmail("aa");
user.setName("aa@126.com");
map.put(user, 16);
User user1 = new User();
user1.setName("bb");
user1.setEmail("bb@163.com");
map.put(user1, 34);

User user2 = new User();
user2.setName("cc");
user2.setEmail("cc@163.com");
map.put(user2, 12);



return SUCCESS;
}

}

页面上显示的jsp代码是这样的:
<tr>
<td>姓名</td>
<td>邮箱</td>
<td>年龄</td>
</tr>
<tr>
<s:iterator value="map">
<s:iterator value="key">
<td><s:property value="name" /></td>
<td><s:property value="email" /></td>
</s:iterator>
<td><s:property value="value" /></td>
</s:iterator>
<tr>
-------------------------------------------

现在我想在页面上显示数据,要根据map中的value也就是年龄排序,要在方法中怎么写,谢谢??
...全文
1012 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengzhw 2009-02-13
  • 打赏
  • 举报
回复
利用MAP进行排序
http://www.blogjava.net/xiekai-blog/archive/2007/11/29/164009.html
mysky191_chi 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 believefym 的回复:]
为什么不把年龄也就是你的value设计为user的一个property,存的时候直接把user存到一个List里面,然后实现一个comprable接口,直接sort一下就好了
[/Quote]

已经很清楚啦,就是把用户邀请的人数作为user的一个属性,通过实现collections.sort(List<User> ,new Comparator(){})来实现排序~!
fulianglove 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wysunning 的回复:]
其实我这是举个例子,公司里面的是统计下一个会员邀请了多少的用户
会员姓名,会员邮箱,邀请人数:
姓名,邮箱是属于User里的属性。
而人数是另一个方法获得的。
所以我用了map.put(user,count);

在页面上显示的时候是无序的,我想根据邀请邀请人数(count)进行排序,不知道改怎么做
[/Quote]
我看还是按照一楼,二楼的方法较好,更方便。
邀请人数虽然是另一个方法获得的,但是仍然可以作为User的一个属性,提供set/get方法就可以。没必要担心[邀请人数]不像User的一个属性这种问题
把所有User都放在一个List中。
然后 让User类实现comprable接口,实现comprable接口唯一定义的方法int compareTo(User user);
具体compareTo的说明,参见javaAPI里(java.lang.Comparable)

然后调用java.util.Collections.sort(List list)
这个方法是根据你重写的compareTo结果来升序排序,
降序的话Collections里有reverse或reverseOrder方法可用
wysunning 2009-02-13
  • 打赏
  • 举报
回复
谁给我 说说啊
wysunning 2009-02-12
  • 打赏
  • 举报
回复
其实我这是举个例子,公司里面的是统计下一个会员邀请了多少的用户
会员姓名,会员邮箱,邀请人数:
姓名,邮箱是属于User里的属性。
而人数是另一个方法获得的。
所以我用了map.put(user,count);

在页面上显示的时候是无序的,我想根据邀请邀请人数(count)进行排序,不知道改怎么做

MT502 2009-02-12
  • 打赏
  • 举报
回复
年龄完全可以作为user的一个属性,为什么要用map分开保存?
然后把user实现Comparable就能很容易的根据年龄排序了
believefym 2009-02-12
  • 打赏
  • 举报
回复
为什么不把年龄也就是你的value设计为user的一个property,存的时候直接把user存到一个List里面,然后实现一个comprable接口,直接sort一下就好了

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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