user1912054 :
안녕하세요 동료 개발자가 문제 아래에 전문 지식을 필요로 나는지도의 수신 목록 아래에 있습니다
Map<String, Object> m1 = new HashMap<String, Object>();
m1.put("name", "alex");
m1.put("age", "40");
l1.add(m1);
m1 = new HashMap<String, Object>();
m1.put("name", "alex");
m1.put("state", "Texas");
l1.add(m1);
m1 = new HashMap<String, Object>();
m1.put("name", "alice");
m1.put("age", "35");
l1.add(m1);
m1 = new HashMap<String, Object>();
m1.put("name", "alice");
m1.put("state", "Arizona");
l1.add(m1);
m1 = new HashMap<String, Object>();
m1.put("name", "bob");
m1.put("age", "25");
l1.add(m1);
m1 = new HashMap<String, Object>();
m1.put("name", "bob");
m1.put("state", "Utah");
l1.add(m1);
나는 자바 8 streams- 사용하여 다음과 같이지도의 출력 목록을 원하는
[{name="alex", age="40", state="Texas"}
{name="alice", age="35", state="Arizona"}
{name="bob", age="25", state="Utah"}]
여기에 어떤 도움을 주셔서 감사합니다.
하디 J :
당신은 사용할 수 있습니다 toMap()
병합 기능을 수집합니다.
l1.stream()
.collect(Collectors.toMap(m -> m.get("name").toString(), Function.identity(),
(map1, map2) -> { map1.putAll(map2); return map1;})
)
.values();
실제로이 솔루션에, 우리는에 따라지도 병합 이름 키 값입니다. 이지도에 대해 동일한 값이 있으면 그래서 이름 키를 그들은 병합합니다. 이후 toMap () 수집가의 결과는 Map<String,Map<String,Object>>
여기 욕망의 결과는 Map<String,Object>
우리가 불렀다values()