Java 如何按属性对对象列表进行分组,然后使用(键,值)对迭代结果?
我想按属性对对象列表进行分组,然后使用(Key,Value)对迭代结果 我在Java8中找到了使用属性对对象列表进行分组的方法,如下所示Java 如何按属性对对象列表进行分组,然后使用(键,值)对迭代结果?,java,java-8,Java,Java 8,我想按属性对对象列表进行分组,然后使用(Key,Value)对迭代结果 我在Java8中找到了使用属性对对象列表进行分组的方法,如下所示 // filteredPageLog has the filtered results from PageLog entity. Map<String, List<PageLog>> results = filteredPageLog.stream().collect(Collectors.groupingBy(p -> p.
// filteredPageLog has the filtered results from PageLog entity.
Map<String, List<PageLog>> results =
filteredPageLog.stream().collect(Collectors.groupingBy(p -> p.getSessionId()));
使用
Java中没有元组。你可以找到更详细的解释。您可以迭代键、值或条目,但不能迭代元组。Dummy
map
:
Map<String,String> map = new HashMap() {{
put("1","20");
put("2","30");
}};
2.
Map.entrySet().forEach()
要求在这一行“results.entrySet().forEach(entry->{”上出现Consumergetting空指针异常@talex@MohammedShirhaan这意味着results
为空。当我调试时,entrySet有值@talex@Whatnull
then?for(Map.Entry:results.entrySet()){String sessionId=entry.getKey();List pageLogs=entry.getValue();//logic}//此操作已按所需方式完成:results.forEach((键,值)->{//logic});
没有元组意味着?意味着没有像Scala中那样的语法糖,例如,请参阅。在Java中,您不能用(键,值)代替条目。只能作为重载方法的lambda,它接收合适的函数接口。不能写不能用(键,值)代替条目
您确定吗?我忘了map.forEach(实际上是双重消费!别担心,我在检查你的概念。)
results.entrySet().forEach(entry -> {
var key = entry.getKey();
var value = entry.getValue();
//logic
});
Map<String,String> map = new HashMap() {{
put("1","20");
put("2","30");
}};
map.forEach((keys,values) -> { String k = keys ;
String v= values;
//logic goes here
});
map.entrySet().forEach((entry) -> { String k = entry.getKey();
String v= entry.getValue();
//logic goes here
});