如何按属性对对象列表进行分组,然后使用(键,值)对迭代结果?

时间:2019-02-19 08:28:14

标签: java java-8

我想按属性对对象列表进行分组,然后使用(键,值)对对结果进行迭代。

我已经找到了在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
});

3 个答案:

答案 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,您可以找到更详细的说明。您可以遍历键,值或条目,但不能遍历元组。