将一个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模板中遍历一个包含Map对象的List。 在Java中,`List<Map<String>>`表示一个列表,其中每个元素都是一个键值对的集合...
当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在Freemarker模板中表现为list类型,你可以通过`<#list>`来迭代每个元素。下面是一段基础示例: ```freemarker <#list users as user> 用户名:${...
通过这个方法,我们可以获取到一个包含所有键的`Set`集合,然后使用迭代器(`Iterator`)或增强型for循环(foreach)来遍历这个`Set`,从而间接地遍历整个`Map`。 #### 示例代码解析: ```java private String ...
在Java编程语言中,`Map`接口是集合框架中的一个核心组成部分,它存储键值对映射。本篇文章将详细介绍几种常用的遍历`Map`的方法,包括使用传统迭代器(Iterator)、增强型for循环(For-Each循环)以及通过键集(Key...
在这个例子中,`myMap`是Action类中的一个Map属性,`iterator`标签会遍历Map的每个键值对,并使用`s:property`标签显示它们。 接下来,我们讨论如何遍历List。List是一种有序的集合,`iterator`标签通过`status`...
另一种常用的方法是通过`Map.entrySet()`方法获取键值对的集合视图,然后使用`Iterator`进行遍历。这种方法可以直接访问键值对,而不需要通过键获取值。 **代码示例:** ```java Iterator<Map.Entry, String>> ...
首先新建一个实体类Person @Data public class Person { /** 编码 */ private String code; /** 名字 */ private String name; public Person(String code, String name) { this.code = code; this.name = ...
4. **将Map添加到新的List中**:每当创建完一个Map后,将其添加到一个新的List<Map>集合中。 5. **返回新的List<Map>**:最终返回包含Map对象的List集合。 #### 示例代码: 假设有一个AnnouncementBean类,包含...
接着,我们通过查询数据库获取了一组`ProductAttributeMetaEntity`对象,并将其转换为所需的`List<ProductProperty>`形式。最后,将该列表存入`model`中。 在JSP页面中遍历该嵌套List: ```jsp ${ppList}" var=...
假设我们有一个List,其中每个元素都是一个Map,我们可能需要遍历List并访问每个Map: ```java List<Map, String>> userList = new ArrayList(); for (Map, String> user : userList) { String userName = user....
该文档代码讲述了如何在jsp页面iterator遍历数组、Map、List集合
本文主要讲解了在Java中如何遍历Map集合,这是在日常编程中经常遇到的一个操作,特别是在需要处理键值对数据时。以下将详细介绍Map集合的遍历方法以及一些相关的知识点。 首先,Map是Java集合框架中的一个接口,它...
- **解析**:这段代码使用了一个`while`循环来遍历从`start`到`end`之间的每一天,并统计其中星期六和星期天的数量。 3. **格式化日期:** ```java SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd...
在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用,我们需要将 ResultSet 转为 List<Map>,以便于后续的数据处理和展示。 下面是将...
一种常见的方式是创建一个新的List,然后遍历Map的entrySet(),将每个键值对作为新List的一个元素添加进去。如果需要分别获取键和值,可以创建两个List,一个存放键,一个存放值。 描述中提到的博客链接可能详细...
Map是一个键值对的集合,不直接支持索引访问。有三种遍历Map的方法: - **方法一:通过keySet遍历** ```java Map, String> map = new HashMap, String>(); map.put("key1", "value1"); map.put("key2", ...
当JSON数据以数组的形式存在时,我们可以使用Gson将其解析为`List`对象。以下是一个示例: ```java public class City { int id; String name; String code; String map; } public static void main(String[] ...
该方法首先创建了一个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 合并
我们的目标是将两个List中的数据进行匹配,并将第二个List中的grade值赋给第一个List。如果两个List中的id值相同,就把第二个List中的grade值赋给第一个List。如果不匹配,默认grade值为0。 使用Java8 Stream可以...