java 8 stream groupBy和新对象创建

时间:2014-11-27 00:58:14

标签: java lambda java-8 java-stream

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

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

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

现在,我有一个C2对象列表(列表列表),我希望使用从流式传输的C2对象创建的C1的getProperty()上的条件进行流式处理和过滤。

有没有办法用流做到这一点?

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

我想我应该有XXXX使用来自流的C2对象创建一个C1对象并比较它的getProperty()(例如,“value”.equals(o2.getProperty())

这有可能吗?

1 个答案:

答案 0 :(得分:4)

你将丢弃实例,但确定

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

这似乎有点倒退。也许这个属性的逻辑应该放在C2类或某个实用程序类(静态方法)或为给定C2实例提供属性的实例中。