`

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
分享到:
评论

相关推荐

    关于Java中List对象的分页思想-按10个或者n个数对list进行分组

    Java中List对象的分页思想-按10个或者n个数对list进行分组 Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n...

    C#List集合分组winform把List分组

    标题"**C# List集合分组WinForm把List分组**"涉及到的关键知识点是C#中的List集合以及如何利用Linq进行数据分组。在WinForm应用中,数据分组通常是为了更好地展示或操作数据,例如在控件如DataGridView中进行数据...

    根据某个属性对List中的所有对象分组,该属性值相同的对象分到一个组

    本问题中提到的情况就是如何根据对象的一个属性值对List中的对象进行分组,以便每个组包含具有相同属性值的对象。这种操作在处理集合数据时非常常见,例如在报表生成、数据分析或数据显示优化等场景。 首先,这个...

    java集合分组(Guava)

    这个接口是Java 8中Stream API的`groupingBy`函数的一种扩展,允许我们对集合对象进行更复杂的分组操作。`GroupingBy`可以接受一个函数作为参数,这个函数定义了如何从每个元素中提取分组键,然后根据这些键将元素分...

    Q703207 list如何实现动态分组

    这里的“Q703207 list如何实现动态分组”指的是如何使用编程语言(可能是Python或其他支持list操作的语言)对list中的元素进行动态的、基于某种规则的分组操作。在Python中,`groupby`函数通常是实现这一功能的关键...

    将list中的内容根据某一属性的值对list进行拆分

    拆分list,将list中的内容根据某一属性的值对list进行拆分,分组

    java 集合分组与排序

    `Collectors.groupingBy`方法允许我们将集合中的元素按照指定的键进行分组,创建一个Map,其中键是分组的标准,值是一个包含该组所有元素的列表。例如,如果我们有一个`Person`对象的列表,可以按年龄分组: ```...

    C#实现泛型List分组输出元素的方法

    C#中实现泛型List分组输出元素的方法是非常重要的操作之一。本文将详细介绍如何使用C#对泛型List进行分组输出元素的方法,涉及C#针对List的遍历、排序、输出等相关操作技巧。 首先,我们需要了解什么是泛型List。...

    JAVA JDK8 List分组的实现和用法

    在上面的例子中,我们使用了Collectors.groupingBy方法将List中的Coupon对象按照其couponId属性分组。该方法将List中的元素分配到不同的组中,每个组的键是couponId的值,值是一个List,包含所有具有相同couponId的...

    java实现分组聚合

    这个方法接收一个函数作为参数,该函数定义了如何从原始对象中提取分组键。例如,如果你有一个包含订单对象的列表,每个订单都有一个日期属性,你可以按照日期进行分组。 ```java List&lt;Order&gt; orders = ...; Map, ...

    JAVA JDK8 List分组获取第一个元素的方法

    在 main 方法中,我们首先创建了一个List对象,然后使用Stream API对其进行分组。我们使用Collectors.groupingBy方法对List对象进行分组,按照Coupon的couponId字段进行分组。然后,我们使用Collectors....

    List 对象排序 Demo

    在编程领域,特别是使用Python语言时,`List`对象是数据结构中非常基础且重要的部分。`List`对象可以容纳不同类型的数据,并提供了丰富的操作方法,包括排序。本篇将通过一个名为"List对象排序Demo"的主题,深入探讨...

    Android listview 分组及折叠分组

    当用户点击分组头时,我们需要更新Group对象的状态,并通知Adapter数据已改变,这样Adapter就会重新绘制视图。 ```java // 在ListView的OnItemClickListener中处理点击事件 listView.setOnItemClickListener(new ...

    JAVA8 stream中三个参数的reduce方法对List进行分组统计操作

    在上述代码中,`accumulator`函数负责将每个`Foo`对象添加到`Bar`对象中,而`combiner`函数则用于合并两个`Bar`对象,确保在并行处理时能够正确地组合结果。 最后,我们得到了一个新的Map,其中键是"name",值是...

    java 按照每周分组

    在Java编程中,"按照每周分组"是一个常见的数据处理需求,特别是在数据分析、报表生成或者时间序列分析等场景。这个需求通常涉及到日期处理和集合分组。以下将详细讲解如何在Java中实现这一功能。 首先,我们需要...

    java8快速实现List转map 、分组、过滤等操作

    在 Java 8 中,可以使用 Collectors.groupingBy() 方法将 List 中的对象元素分组。例如,可以使用以下代码将 Apple 对象的 List 按照 id 分组: ```java Map, List&lt;Apple&gt;&gt; groupBy = appleList.stream().collect...

    数据分组统计C#实例

    在C#编程中,数据分组是一个常见的任务,特别是在处理大量数据时,为了分析和理解数据,我们需要将数据按照特定的规则进行分类和汇总。本实例将深入探讨如何使用C#来实现数据分组统计。 首先,让我们了解C#中的数据...

    Android中ListView中数据按照时间\日期分组(分类)标题可悬浮,可下拉刷新

    关于PinnedSectionRefreshListView中注释显示英文问题,可以下载http://download.csdn.net/detail/qq_28690547/9310615这个链接,查看里面PinnedSectionListView中的中文注释.因为时间问题偷懒没有转换.有什么问题欢迎...

    C# List实现行转列的通用方案

    以家庭月度费用为例,可以在[Name, Area, Month]三个维度上随意组合进行分组,三个维度中选择一个做为列显示。 2. 动态Linq的使用 使用System.Linq.Dynamic动态LINQ库,可以实现行转列功能。首先,需要安装System....

Global site tag (gtag.js) - Google Analytics