怎么用Lambda遍历List<Map<String,Object>>得到Map<String,String>?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用Lambda遍历List<Map<String,Object>>得到Map<String,String>?相关的知识,希望对你有一定的参考价值。
public static void main(String[] args)
List<Map<String, Object>> testList = Lists.newArrayList();
Map<String, Object> m1 = Maps.newHashMap();
m1.put("a", "a1");
m1.put("b", "b1");
m1.put("x", "x1");
Map<String, Object> m2 = Maps.newHashMap();
m1.put("a", "a2");
m1.put("b", "b2");
m1.put("x", "x2");
Map<String, Object> m3 = Maps.newHashMap();
m1.put("a", "a3");
m1.put("b", "b3");
m1.put("x", "x3");
testList.add(m1);
testList.add(m2);
testList.add(m3);
// Map<String, String> result = testList.stream().....
// 要求最终结果:a1=b1,a2=b2,a3=b3
List<Map<String, Object>> testList = new ArrayList<>();
Map<String, Object> m1 = new HashMap<>();
m1.put("a", "a1");
m1.put("b", "b1");
m1.put("x", "x1");
Map<String, Object> m2 = new HashMap<>();
m2.put("a", "a2");
m2.put("b", "b2");
m2.put("x", "x2");
Map<String, Object> m3 = new HashMap<>();
m3.put("a", "a3");
m3.put("b", "b3");
m3.put("x", "x3");
testList.add(m1);
testList.add(m2);
testList.add(m3);
Map<String, String> m4 = new HashMap<>();
testList.stream().forEach(m ->
m4.put((String) m.get("a"), (String) m.get("b"));
);
m4.forEach((x, y) ->
System.out.println(x + y);
);
System.out.println("end");
追问
只能这样吗?不能一个链式操作直接返回一个map吗
追答我觉得是可行,但是我技术也没达到
参考技术A Map<String, String> map = testList.stream().collect(HashMap::new,(k, v) ->k.put(String.valueOf(v.get("")), String.valueOf(v.get(""))),HashMap::putAll);javaweb应用,dto怎么遍历
我现在有个dto,比如里面有菜名,菜类型,价格,要用遍历根据不同菜类型把dto分开,怎么做
1、java中,dto是从db查询出来后放在list中的,所以需要遍历list。2、java中遍历list示例:
List<String> list = new ArrayList<String>();
list.add(new DTO());
for(int i = 0; i < list.size(); i++)
list.get(i); //获取
System.out.println(list.get(i));
2、DTO (Data Transfer Object)数据传输对象,主要用于远程调用等需要大量传输对象的地方。
比如有一张表有100个字段,那么对应的PO就有100个属性。
但是业务界面上只要显示10个字段, 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端, 这时就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO(值对象)。 参考技术A 使用Collections追问
大概具体怎么写,我不会
参考技术B 你应该是 拿到了 DTO的一个List把,我们项目用的是jsp 标签,希望可以给你一个思路:<tbody>
<c:forEach var="dto"
items="$dtoList">
<tr>
<td>$dto.xx</td>
<td>$dto.xxx</td>
</tr>
</c:forEach>
</tbody> 参考技术C class DTO
private int value;
pirvate String name;
public void setValue(int value)
this.value = value;
public void setName(String name)
this.name= name;
public String getName()
return this.name;
public String getValue()
return this.value;
import java.util.ArrayList;
import java.util.List;
class Test
public static void main(String args[])
List list = new ArrayList<DTO>();
DTO dto1 = new DTO();
dto1.setName("a");
DTO dto2 = new DTO();
dto1.setName("b");
DTO dto3 = new DTO();
dto1.setName("c");
list.add(dto1);
list.add(dto2);
list.add(dto3);
for(DTO o:list)
if(o.getName.equals("a"))
..........
本回答被提问者采纳
以上是关于怎么用Lambda遍历List<Map<String,Object>>得到Map<String,String>?的主要内容,如果未能解决你的问题,请参考以下文章
用Struts2在页面上遍历两个集合.一个是list一个是Map我要怎么区分遍历?
求教arraylist里面放map,怎么循环遍历得到map里面的数据,如:List<Map<String, String>> list = new Ar