首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用字符串和List<Object1>迭代映射并替换为List<Object2>

使用字符串和List<Object1>迭代映射并替换为List<Object2>
EN

Stack Overflow用户
提问于 2019-02-11 07:19:34
回答 1查看 63关注 0票数 1

我正在尝试使用流的概念来处理Java中的HashMap。

问题:

代码语言:javascript
运行
复制
public class SourceClass{
    private String EmpId;
    private String EmpName;
}

public class ResultClass{
    private  String EmpId;
    private  String EmpAddress;
    private  String EmpMartialStatus;
    private  Integer EmpAge;
}

我有2个类,它将在下面的方法中用作列表。

现在我应该处理这个映射,并使用SourceClass值来获得我拥有其主数据的ResultClass值。因此,响应应该如下所示。

代码语言:javascript
运行
复制
 sourceClasseMap = { "doj1", 
                   <[EmpId1, EmpName1],                  
                    [EmpId1, EmpName1]> 
          }

我的结果应该是

代码语言:javascript
运行
复制
return ResultClassMap = { "doj1", 

   <[EmpId1, EmpAddress1, EmpMartialStatus1, EmpAge1],                                           
  [EmpId2, EmpAddress2, EmpMartialStatus2, EmpAge2]> 
}

方法看起来像这样

代码语言:javascript
运行
复制
public Map<String, List<ResultClass>> getStausesForDevices(Map<String, SourceClass[]> sourceClasseMap){

    Expecting to use Java 8 Stream concept.
    Expecting to use Java 8 Stream concept.
EN

回答 1

Stack Overflow用户

发布于 2019-02-11 07:42:31

假设

ResultClass = jedis.get(SourceClass.EmpId1 + SourceClass.EmpName1)

如果你不受java8的限制,有来自java9的flatMapping方法的流方式:

代码语言:javascript
运行
复制
public Map<String, List<ResultClass>> getStausesForDevices(Map<String, SourceClass[]> sourceClassMap) {

    return sourceClassMap.entrySet().stream()
            .collect(groupingBy(Map.Entry::getKey,
                    flatMapping(entry -> Arrays.stream(entry.getValue()),
                            mapping(source -> jedis.get(source.getEmpId() + source.getEmpName()), toList()))));

}

更新

如果你不能使用java9,有一个没有flatMapping的解决方案

代码语言:javascript
运行
复制
return sourceClassMap.entrySet().stream()
        .collect(toMap(Map.Entry::getKey, entry -> Arrays.stream(entry.getValue())
                .map(source -> jedis.get(source.getEmpId() + source.getEmpName()))
                .collect(toList())));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54622139

复制
相关文章

相似问题

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