/**
*
*/
package suntest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @author zhang
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args)
{
List<User> users = new ArrayList<User>();
User user1 = new User();
user1.setName("grace");
user1.setFaMember("father");
user1.setFaMemberAge("50");
user1.setFaMemberWork("worker");
User user2 = new User();
user2.setName("grace");
user2.setFaMember("mother");
user2.setFaMemberAge("45");
user2.setFaMemberWork("worker");
User user3 = new User();
user3.setName("lily");
user3.setFaMember("mother");
user3.setFaMemberAge("60");
user3.setFaMemberWork("teacher");
User user4 = new User();
user4.setName("candy");
user4.setFaMember("father");
user4.setFaMemberAge("60");
user4.setFaMemberWork("housewife");
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
//分组开始
Map<String,List<User>> mapList = new HashMap<String,List<User>>();
Map<String,User> mapObject = new HashMap<String,User>();
//步骤1
for(Iterator it = users.iterator();it.hasNext();)
{
User user = (User)it.next();
if(mapList.containsKey(user.getName()))
{ //如果已经存在这个数组,就放在这里
List<User> userList = mapList.get(user.getName());
userList.add(user);
}else
{
List<User> userList2 = new ArrayList<User>();
//重新声明一个数组list
userList2.add(user);
mapList.put(user.getName(), userList2);
}
}
System.out.println(mapList);
//利用步骤2再次分组
//List<List<User>> list = new ArrayList<List<User>>();
for(Map.Entry<String, List<User>> m: mapList.entrySet())//按键值遍历 Map
{
//Map newMapList = new HashMap(); //
//String key = m.getKey();
List<User> userSingle = new ArrayList<User>();
userSingle = m.getValue();
System.out.println(userSingle);
//list.add(userSingle);
}
}
public static class User
{
private String name;
private String faMember;
private String faMemberAge;
private String faMemberWork;
public String getFaMember()
{
return faMember;
}
public void setFaMember(String faMember) {
this.faMember = faMember;
}
public String getFaMemberAge() {
return faMemberAge;
}
public void setFaMemberAge(String faMemberAge) {
this.faMemberAge = faMemberAge;
}
public String getFaMemberWork() {
return faMemberWork;
}
public void setFaMemberWork(String faMemberWork) {
this.faMemberWork = faMemberWork;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString()
{
StringBuffer str = new StringBuffer();
str.append(this.getName());
str.append(",");
str.append(this.getFaMember());
str.append(",");
str.append(this.getFaMemberAge());
str.append(",");
str.append(this.getFaMemberWork());
return str.toString();
}
}
}
今天有一网友问过我这样一个问题,他用 Map 来封装数据层返回的数据,想在 Jsp 页面通过 struts2 标签来显示 map 中的键值,说真的以前开发封装数据都是用 List ,从来没有用过 Map 来封装数据,最多是用来保存用户登录信息,以方便用来判断用户是否以登录, 但用 Map 来封装数据实在不是明智之举, 但我以前也从没这样子作过,所以在网上找了好久也没找到相关的信息, 后来一想struts2 可以直接用来显示action 中的属性值,所以就想出了以下方式解决了这个问题,具体代码如下: action
public String execute() throws Exception ...{
if(this.getUserName().equals("chen") && this.getPwd().equals("chen")) ...{
ActionContext.getContext().getSession().put("userName", this.getUserName());
User user = new User();
user.setName("a");
user.setCode("A");
map.put(1, user);
user = new User();
user.setName("b");
user.setCode("B");
map.put(2, user);
return SUCCESS;
}
return ERROR;
}以下是 jsp <%@taglib uri="/struts-tags" prefix="s"%>
<table>
<s:iterator value="map.keySet()" id="id">
<tr><td>
<s:property value="#id"/></td>
<s:iterator value="map.get(#id)">
<td><s:property value="name"/></td>
<td><s:property value="code"/></td>
</s:iterator>
</tr>
</s:iterator>
</table>
文章转载自网管网:http://www.bitscn.com/pdb/java/200806/143934.html