병합지도 java8 목록에서 매핑

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()

추천

출처http://43.154.161.224:23101/article/api/json?id=292826&siteId=1