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

java8-groupingby来自对象内部的属性

闾丘淇
2023-03-14
public class A{
        private int a;
        private ...
        private B b;
}

public class B{
           private String name;
           private ... 
}
List<A> alist;
Map<String, List<A>> resultmap = alist.stream().collect(Collectors.groupingby(B::getName()));

但这不可能访问B。

共有1个答案

盛超
2023-03-14

您只需要编写一个lambda表达式来访问b:

Map<String, List<A>> resultMap = alist.stream()
                                      .collect(Collectors.groupingBy(a -> a.getB().getName()));

假设有一个gettergetB()来检索B属性,您可以在lambda表达式中调用它。

另外,您当前的方法引用无效:您不需要b::getName()中的括号。

 类似资料:
  • 我想得到以下数据结构:Map 给定的是一个包含字段als原语(位置、目标、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置,一个人可以瞄准多个目的地(按距离)。 关于第二个代码段:结果应该与第一个代码中的结果相同。唯一的区别是,LocationPair中提供的数据已被进一步处理,因此目的地和距离已被放入其目标地图中。 我知道这一定是可能的,但不知何故,我无法弄清楚如何完成它。上面的流代码

  • 问题内容: 首先看下面的JavaScript对象 我想将值设置为与相同,因此我将对象值放在前面,但它对我不起作用,我也使用过,但仍然失败。我的问题是如何访问对象内对象的属性。 一些用户沉迷于问“您想做什么或发送脚本等”,对于那些人来说,答案很简单:“我想访问对象内的对象属性”,上面提到了脚本。 任何帮助将不胜感激 :) 问题答案: 使用 对象文字 语法时,不能在初始化期间引用对象。创建对象后,需要

  • 问题内容: 我有一些内部属性的类,我也想将它们序列化为json。我该怎么做?例如 使用保存 我懂了 问题答案: 用属性标记要序列化的内部属性: 然后再测试: 我得到以下输出: (其中“ Tile.JsonInternalPropertySerialization”和“ Tile”是我正在使用的名称空间和程序集名称)。 顺便说一句 ,使用时,千万注意从这个谨慎的Newtonsoft文档: 当您的应用

  • 问题内容: 我想使用Java 8技巧在一行中执行以下操作。 给定此对象定义: 和a ,我想得到a ,它是第一个列表中所有s对象的列表- 顺序相同。 我可以使用Java中的循环来做到这一点,但我相信Java8中应该有一个单行lambda可以做到这一点。我无法在线找到解决方案。也许我没有使用正确的搜索词。 有人可以为这种转换建议一个lambda或另一种线吗? 问题答案: 这应该可以解决问题: 也就是说

  • 我可以在Java中使用循环来实现这一点,但我认为在Java8中应该有一个一行程序lambda来实现这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。 有人能为这个转换提出一个lambda或另一个一行程序吗?

  • 问题内容: 这有效: 但这不是: 为什么?我有一种感觉,这与对象是内置类有关,但是我发现这并不令人满意,因为我在MyClass的声明中没有进行任何更改。 问题答案: Python将属性存储在字典中。您可以将属性添加到,看到它具有 : 重要的区别是没有属性。