【发布时间】:2016-03-08 16:17:50
【问题描述】:
我有一个List<POJO>,我想从中提取数据,我感兴趣的变量是:
Environment: StringApplication: StringThroughput: Double
有7个Environment对象,每个Environment有18个Application对象,每个对象有多个values。
我正在尝试遍历 List<POJO> 并将这些值存储在 Hashmap<Environment.ToString, Hashmap<Applications.ToString, List<Double>> 中
我正在尝试使用 Java 8 的 Lambda 功能;到目前为止我的代码:
private HashMap<String, List<BigDecimal>> appMap = new HashMap<String, List<BigDecimal>>();
private HashMap<String, HashMap> envMap = new HashMap<String, HashMap>();
for(POJO chartModel: List<POJO>) {
appMap.computeIfAbsent(chartModel.getName(), v -> new ArrayList<BigDecimal>())
.add(BigDecimal.valueOf(chartModel.getThroughput()));
envMap.put(chartModel.getEnvironment(), appMap);
}
首先,是否有一种速记方法可以使用Java8 迭代内部Map 内的List?
其次,我的代码不太正确,因此当前映射将所有 Throughput 值添加到其 Application 键中,因此我最终得到了 18 个键和值列表。
我需要它做的是在我的envMap 中我应该有7 个Environment 对象,每个对象都有18 个Application 对象和值,所以总共有126 个Application 对象。这可以按照我尝试的方式实现吗,有 Lambda 方法可以实现吗?
【问题讨论】:
-
好吧,对于初学者来说,你只有一个
appMap的实例,这将被插入envMap7 次,每个Environment一次。
标签: java lambda hashmap java-8