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

java 8流groupBy和新对象创建

百里成仁
2023-03-14

假设我有两个类C1和C2,其中C2由C1的构造函数使用:

public class C1
{
    public C1( C2 o2 ){ ... }

    public String getProperty()
    {
        String result;
        ...
        return result;
    }
}

现在,我有一个C2对象的列表(List list),我想使用从流式传输的C2对象创建的C1的getProperty()上的条件进行流和筛选。

有办法用溪流做到这一点吗?

List<C2> list = ...
List<C2> result = list.stream().filter( XXXX )

我想我应该有XXXX,它使用流中的C2对象创建C1对象,并比较其getProperty()(例如,"value". equals(o2.get))

这有可能吗?

共有1个答案

鄢子平
2023-03-14

你会扔掉这些实例,但肯定会的

list.stream().filter(c2 -> "value".equals(new C1(c2).getProperty())).collect(toList());

这看起来确实有点倒退。这个属性的逻辑可能应该放在C2类或某个实用程序类(静态方法)或实例中,为给定的C2实例提供属性。

 类似资料:
  • 我试图理解Java8流。我有两门课: 以及: 字段应指示全天的卡路里总量是否为。该字段与当天的所有条目相同。 我试图从

  • 我如何做到这一点?基本上映射列表中的每个字符串来创建一个对象,将其与fix对象进行比较,并基于其中一个属性返回max。谢了。

  • 我有一个学生名单a和学生名单B。 学生对象包含如下字段:否、年龄、城市、出生日期、工资 我的列表A包含这些对象 我的列表B包含这些对象 我想做的是提取ListA有但listB没有的学生对象,以及ListA和listB有但薪水不同的学生对象(如否、年龄、城市)。我还想写工资差异。 我想在java 8中使用流api。首先,我想将students对象提取到列表中,但我现在可以提取常见的student对象

  • 我有一个标签列表,它有很少的属性,如标签名,标签类型,标签ID,点击,订阅者,每个标签的视图。tagName和tagType可以对每个tag对象重复,而tagId对每个tag是唯一的。 我想做一个这样的手术: 通过tagName和TagType组合对标记列表进行分组/聚合 对于每个组,我希望将聚合列表缩减为tagName和tagType的每个组合的单个元素。对于单个元素,tagId与我无关,甚至可

  • 我试图使用Java8 groupby和reduce特性来根据分组对元素求和,但代码似乎不适合我。 我的要求是,对于每一个DTO对象,我希望这个公里数根据卡车车组进行汇总。因此,突出显示的列应该是同一个TruckId(**Contract flotte)的值的总和 这是我的DTO: "'公共类CostsTruckWsDTO实现可序列化{ 以下是逻辑:''costsTruckWsDTO。setGrou

  • 我有一个班级排,比如: a类统计数据: 我有一个行列表 我需要把它转换成一个按id1和id2分组的映射,我需要度量数据以这种形式汇总成Stats对象 我正在使用java stream生成这个,但仍停留在这一点上: 如何将列表转换为另一个对象,该对象包含该列表中所有对象的总和? 还有一种方法可以使用java stream将上述形式的两个输出映射合并为第三个输出映射吗? 例如:- 输入:行列表 结果: