我想按属性对对象列表进行分组,然后使用(键,值)对对结果进行迭代。
我已经找到了在Java 8中将对象列表与属性进行分组的方法,
// filteredPageLog has the filtered results from PageLog entity.
Map<String, List<PageLog>> results =
filteredPageLog.stream().collect(Collectors.groupingBy(p -> p.getSessionId()));
但是结果将仅具有条目集(在entrySet属性中具有值)。 keySet和valueSet将具有空值。我想迭代类似的东西
results.forEach((key,value) -> {
//logic
});
答案 0 :(得分:3)
使用
results.entrySet().forEach(entry -> {
var key = entry.getKey();
var value = entry.getValue();
//logic
});
答案 1 :(得分:2)
虚拟map
:
Map<String,String> map = new HashMap() {{
put("1","20");
put("2","30");
}};
您可以通过两种方式进行操作:
1。。Map<K, V>.forEach()
期望BiConsumer<? super K,? super V>
为
参数和BiConsumer<T, U>
摘要的签名
方法是accept(T t, U u)
。
map.forEach((keys,values) -> { String k = keys ;
String v= values;
//logic goes here
});
2。。Map<K, V>.entrySet().forEach()
期望Consumer<? super T>
为
参数和Consumer<T>
摘要的签名
方法是accept(T t)
。
map.entrySet().forEach((entry) -> { String k = entry.getKey();
String v= entry.getValue();
//logic goes here
});
答案 2 :(得分:0)
Java中没有元组。 Here,您可以找到更详细的说明。您可以遍历键,值或条目,但不能遍历元组。