`

将一个List转变为一个Map,并对这样的map进行遍历

阅读更多

将一个List转变为一个Map<Key,List>

这种场景在平常工作中,有很多地方都会用到。这里自己总结一下:

 

 

 

package com.amuse.oneself.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 类List4Map.java的实现描述:List4Map.java
 * 
 * @author ahhqcheng 2012-2-29 下午7:56:11
 */
public class List4Map {

    /**
     * @description 实现将一个List转化为Map<Key,List>的样式
     * @param 某个对象的List
     * @return Map<Key,List>
     */
    public Map<Integer, List<TestObject>> list4Map(List<TestObject> list) {

        Map<Integer, List<TestObject>> map = new HashMap<Integer, List<TestObject>>();

        if ((list != null) && (list.size() != 0)) {
            for (TestObject test : list) {
                // 这一步是关键,也很巧妙吧,哈哈
                List<TestObject> testList = map.get(test.getId());
                if (testList == null) {
                    testList = new ArrayList<TestObject>();
                }
                testList.add(test);
                map.put(test.getId(), testList);
            }
        }
        return map;
    }

    /**
     * @description 对Map<key,List>的数据结构进行遍历
     * @param Map<key,List>
     * @return void
     */
    public void outOfMap(Map<Integer, List<TestObject>> map) {
        Set<Integer> keySet = map.keySet();
        for (Iterator<Integer> i = keySet.iterator(); i.hasNext();) {
            Integer key = i.next();
            System.out.println(key + "  :  ");
            List<TestObject> testList = map.get(key);
            for (TestObject test : testList) {
                System.out.print("<--" + test.getName() + "--" + test.getAddress() + "-->");
            }
            System.out.println();
        }

    }

    public static void main(String[] args) {
        List4Map list4Map = new List4Map();

        /**
         * 构造数据
         */
        List<TestObject> list = new ArrayList<TestObject>();
        TestObject test1 = list4Map.new TestObject(1, "name1", "address1");
        TestObject test2 = list4Map.new TestObject(1, "name2", "address2");
        TestObject test3 = list4Map.new TestObject(1, "name3", "address3");
        TestObject test4 = list4Map.new TestObject(2, "name1", "address1");
        TestObject test5 = list4Map.new TestObject(2, "name2", "address2");
        TestObject test6 = list4Map.new TestObject(2, "name3", "address3");

        list.add(test1);
        list.add(test2);
        list.add(test3);
        list.add(test4);
        list.add(test5);
        list.add(test6);

        // 装换
        Map<Integer, List<TestObject>> map = new HashMap<Integer, List<TestObject>>();
        map = list4Map.list4Map(list);

        // 输出
        list4Map.outOfMap(map);

    }

    class TestObject {

        private int    id;
        private String name;
        private String address;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public TestObject(int id, String name, String address){
            this.id = id;
            this.name = name;
            this.address = address;
        }

        public TestObject(){

        }

    }

}
 

输出为:

1  :  

<--name1--address1--><--name2--address2--><--name3--address3-->

2  :  

<--name1--address1--><--name2--address2--><--name3--address3-->

分享到:
评论

相关推荐

    FreeMarker 遍历list

    这篇博客链接虽然无法直接访问,但从标题来看,我们可以推测其内容可能涉及如何在FreeMarker模板中遍历一个包含Map对象的List。 在Java中,`List&lt;Map&lt;String&gt;&gt;`表示一个列表,其中每个元素都是一个键值对的集合...

    Freemarker中遍历list集合实例

    当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在Freemarker模板中表现为list类型,你可以通过`&lt;#list&gt;`来迭代每个元素。下面是一段基础示例: ```freemarker &lt;#list users as user&gt; 用户名:${...

    java-遍历map

    通过这个方法,我们可以获取到一个包含所有键的`Set`集合,然后使用迭代器(`Iterator`)或增强型for循环(foreach)来遍历这个`Set`,从而间接地遍历整个`Map`。 #### 示例代码解析: ```java private String ...

    java Map 遍历方法

    在Java编程语言中,`Map`接口是集合框架中的一个核心组成部分,它存储键值对映射。本篇文章将详细介绍几种常用的遍历`Map`的方法,包括使用传统迭代器(Iterator)、增强型for循环(For-Each循环)以及通过键集(Key...

    Struts2 iterator 标签遍历 Map,List,数组(三十六)

    在这个例子中,`myMap`是Action类中的一个Map属性,`iterator`标签会遍历Map的每个键值对,并使用`s:property`标签显示它们。 接下来,我们讨论如何遍历List。List是一种有序的集合,`iterator`标签通过`status`...

    Map集合的四种遍历方式 .txt

    另一种常用的方法是通过`Map.entrySet()`方法获取键值对的集合视图,然后使用`Iterator`进行遍历。这种方法可以直接访问键值对,而不需要通过键获取值。 **代码示例:** ```java Iterator&lt;Map.Entry, String&gt;&gt; ...

    不用遍历的方式在对象集合list中抽取属性集合转化为map或list

    首先新建一个实体类Person @Data public class Person { /** 编码 */ private String code; /** 名字 */ private String name; public Person(String code, String name) { this.code = code; this.name = ...

    List转换为List

    4. **将Map添加到新的List中**:每当创建完一个Map后,将其添加到一个新的List&lt;Map&gt;集合中。 5. **返回新的List&lt;Map&gt;**:最终返回包含Map对象的List集合。 #### 示例代码: 假设有一个AnnouncementBean类,包含...

    c标签遍历集合嵌套的List集合

    接着,我们通过查询数据库获取了一组`ProductAttributeMetaEntity`对象,并将其转换为所需的`List&lt;ProductProperty&gt;`形式。最后,将该列表存入`model`中。 在JSP页面中遍历该嵌套List: ```jsp ${ppList}" var=...

    嵌套Map或者List获取key、value值

    假设我们有一个List,其中每个元素都是一个Map,我们可能需要遍历List并访问每个Map: ```java List&lt;Map, String&gt;&gt; userList = new ArrayList(); for (Map, String&gt; user : userList) { String userName = user....

    jsp页面iterator遍历数组、Map、List

    该文档代码讲述了如何在jsp页面iterator遍历数组、Map、List集合

    遍历Map集合.pdf

    本文主要讲解了在Java中如何遍历Map集合,这是在日常编程中经常遇到的一个操作,特别是在需要处理键值对数据时。以下将详细介绍Map集合的遍历方法以及一些相关的知识点。 首先,Map是Java集合框架中的一个接口,它...

    jquery获得单选框和下拉框的值,java日期处理,遍历list,遍历map

    - **解析**:这段代码使用了一个`while`循环来遍历从`start`到`end`之间的每一天,并统计其中星期六和星期天的数量。 3. **格式化日期:** ```java SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd...

    ResultSet 转为listmap

    在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用,我们需要将 ResultSet 转为 List&lt;Map&gt;,以便于后续的数据处理和展示。 下面是将...

    map转化为list

    一种常见的方式是创建一个新的List,然后遍历Map的entrySet(),将每个键值对作为新List的一个元素添加进去。如果需要分别获取键和值,可以创建两个List,一个存放键,一个存放值。 描述中提到的博客链接可能详细...

    List,Set和Map遍历读取[归类].pdf

    Map是一个键值对的集合,不直接支持索引访问。有三种遍历Map的方法: - **方法一:通过keySet遍历** ```java Map, String&gt; map = new HashMap, String&gt;(); map.put("key1", "value1"); map.put("key2", ...

    Gson解析(List和Map)格式json数据 - CSDN博客1

    当JSON数据以数组的形式存在时,我们可以使用Gson将其解析为`List`对象。以下是一个示例: ```java public class City { int id; String name; String code; String map; } public static void main(String[] ...

    java转换xml、list、map和json

    该方法首先创建了一个Document对象,然后添加一个node元素,接着遍历Map对象的keySet,生成key元素,并将其添加到node元素中。最后,使用doc2String方法将Document对象转换为xml字符串。 xml和list之间的转换 xml...

    Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并

    Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并

    Java8 Stream对两个 List 遍历匹配数据的优化处理操作

    我们的目标是将两个List中的数据进行匹配,并将第二个List中的grade值赋给第一个List。如果两个List中的id值相同,就把第二个List中的grade值赋给第一个List。如果不匹配,默认grade值为0。 使用Java8 Stream可以...

Global site tag (gtag.js) - Google Analytics