list对象分组

/**
 * 
 */
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

你可能感兴趣的:(jsp,struts)