当前位置: 首页 > 知识库问答 >
问题:

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

松旭
2023-03-14

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

我在Java8中找到了用一个属性对对象列表进行分组的方法,如下所示

// filteredPageLog has the filtered results from PageLog entity.

Map<String, List<PageLog>> results = 
filteredPageLog.stream().collect(Collectors.groupingBy(p -> p.getSessionId()));

但结果将只有条目集(在entrySet属性中有值)。键集和值集将具有空值。我想迭代如下内容

results.forEach((key,value) -> {
//logic
});

共有3个答案

金嘉言
2023-03-14

Java中没有元组。在这里你可以找到更详细的解释。可以迭代键、值或条目,但不能迭代元组。

寇照
2023-03-14

虚拟地图:

Map<String,String> map = new HashMap() {{
             put("1","20");
             put("2","30");
           }};

您可以通过两种方式做到这一点:

1.<代码>地图

map.forEach((keys,values) -> { String k = keys ;
                               String v= values;
                                //logic goes here
                              });

2.地图

map.entrySet().forEach((entry) -> { String k = entry.getKey();
                                    String v= entry.getValue();
                                    //logic goes here
                                   });       

钱宇
2023-03-14

使用

results.entrySet().forEach(entry -> {
     var key = entry.getKey();
     var value = entry.getValue();
//logic
});
 类似资料:
  • 我已经设法编写了一个使用Java8Streams API的解决方案,该解决方案首先按对象路由的值对其列表进行分组,然后对每组中的对象数进行计数。它返回映射路由->long。代码如下: 和路由类: 应转换为: 请注意,映射的键数为2条路由,它是lastUpdated值最大的一条。

  • 有人知道一种方法(如果可能的话也可以使用lodash)通过对象键对对象数组进行分组,然后根据分组创建新的对象数组吗?例如,我有一个汽车对象数组: 我想制作一个由分组的新汽车对象数组:

  • 问题内容: 比方说你有一个的对象。 如果它们都具有int GoalScored变量,则如何排序?你如何按GoalScored排序? 问题答案: 你可以使用Collections.sort自定义Comparator 。 比较部分也可以这样写: 或者,你可以制作。这定义了所有对象的自然顺序。使用a 更灵活,因为不同的实现可以按名称,年龄等进行排序。

  • 我需要使用特定对象的属性(

  • 按多个属性对数组中的元素进行分组最符合我的问题,因为它确实是按数组中的多个键对对象进行分组的。问题是,这种解决方案不求和属性值,然后删除重复项,而是将所有重复项嵌套在二维数组中。 预期行为 我有一个对象数组,必须按和分组。 此数组中的对象只有在它们的和相同时才被认为是重复的。如果是,我想分别总结它们的和值,然后删除重复项。 因此,在这个示例中,结果数组可能只包含四种组合:,,, 问题 我在这里尝试

  • 我有一个像 我有一个用户对象列表,比如:示例数据 我的问题是,如何将此列表分组以了解品牌id出现在哪些对象中,例如品牌id=10出现在所有三个对象中,品牌id=30仅出现在一个对象中 带有 key=brand id 和 value = count 的地图的结果将解决我的问题,如下所示:{10:3},{20:1},{30,1},{50,1},{80,1 }