首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java中Map对象的联接列表

java中Map对象的联接列表
EN

Stack Overflow用户
提问于 2017-02-28 17:46:30
回答 1查看 1K关注 0票数 0

有两个地图列表,应对这两个列表leftJoin、rightJoin、outerJoin和innerJoin执行数据集连接

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;

public class JoinMap {
    public static List<Map<String, Object>> getFirstMap() {
        List<Map<String,  Object>> data = new ArrayList<>();
        Map<String,  Object> dataMap2 = new HashMap<>();
        dataMap2.put("user", "vs");
        dataMap2.put("data1", 12.0);
        dataMap2.put("data2", 42.0);
        dataMap2.put("data3", 32.0);
        data.add(dataMap2);
        Map<String,  Object> dataMap1 = new HashMap<>();
        dataMap1.put("user", "samraj");
        dataMap1.put("data1", 11.0);
        dataMap1.put("data2", 41.0);
        dataMap1.put("data3", 31.0);
        data.add(dataMap1);
        Map<String,  Object> dataMap = new HashMap<>();
        dataMap.put("user", "varghees");
        dataMap.put("data1", 10.0);
        dataMap.put("data2", 40.0);
        dataMap.put("data3", 30.0);
        data.add(dataMap);
        return data;
    }

    public static List<Map<String, Object>> getSecondMap() {
        List<Map<String,  Object>> data = new ArrayList<>();
        Map<String,  Object> dataMap2 = new HashMap<>();
        dataMap2.put("user", "vs");
        dataMap2.put("test1", 12.0);
        dataMap2.put("test2", 42.0);
        dataMap2.put("test3", 32.0);
        data.add(dataMap2);
        Map<String,  Object> dataMap1 = new HashMap<>();
        dataMap1.put("user", "samraj");
        dataMap1.put("test1", 11.0);
        dataMap1.put("test2", 41.0);
        dataMap1.put("test3", 31.0);
        data.add(dataMap1);
        Map<String,  Object> dataMap = new HashMap<>();
        dataMap.put("user", "varghees");
        dataMap.put("test1", 10.0);
        dataMap.put("test2", 40.0);
        dataMap.put("test3", 30.0);
        data.add(dataMap);
        return data;
    }

    public static List<Map<String, Object>> leftJoin(List<Map<String, Object>> map1, List<Map<String, Object>> map2) {

    }
    public static List<Map<String, Object>> rightJoin(List<Map<String, Object>> map1, List<Map<String, Object>> map2) {

    }
    public static List<Map<String, Object>> innerJoin(List<Map<String, Object>> map1, List<Map<String, Object>> map2) {

    }
    public static List<Map<String, Object>> outerJoin(List<Map<String, Object>> map1, List<Map<String, Object>> map2) {

    }

    public static void main(String[] argv) {
        List<Map<String, Object>> firstMap = getFirstMap();
        List<Map<String, Object>> secondMap = getSecondMap();
    }
}

在Java8中有什么简单的函数可以完成这些方法吗?我正在尝试避免迭代数据并填充新的数据集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-28 18:29:08

当然有。下面是一个使用streams进行内部连接的示例。我假设我们知道一个事实,我们应该加入"user" (如果不是,它会变得越来越复杂,但它仍然可以做到)。

代码语言:javascript
复制
public static List<Map<String, Object>> innerJoin(List<Map<String, Object>> map1, List<Map<String, Object>> map2) {
    return map1.stream().flatMap(m1 -> 
        map2.stream()
                .filter(m2 -> m1.get("user").equals(m2.get("user")))
                .map((Map<String, Object> m2) -> {
                    Map<String, Object> mr = new HashMap<>();
                    mr.putAll(m1);
                    mr.putAll(m2);
                    return mr;
                })
    ).collect(Collectors.toList());
}

我希望并认为你将能够获得灵感,并自己做其他的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42505252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档