Java收集器类用法

时间:2016-03-06 08:40:16

标签: java arraylist java-8 collectors

所以我试图理解这一点,但转化为简单的陈述。但我这样做有困难。

Var是一个包含一堆值的List类。我对代码有一个模糊的理解。此代码捕获尚未从已分配的值并将其输入到未分配的列表中的值。但我不明白如何将其翻译成简单的陈述,以帮助我更清楚地理解它。

List<Var> unassigned = assigned.stream()
                .filter((Var grabNear).(!grabNear.isAssigned()))
                .collect(Collectors.toList());

这是我到目前为止所拥有的。这是对的吗?

List<Var> unassigned = assigned;
Var grabNear;
            for(int i = 0; i < assigned.size(); ++i)
            {
                grabNear = assigned.get(i);
                if(!grabNear.isAssigned())
                {
                    unassigned.add(grabNear);
                }
            }

1 个答案:

答案 0 :(得分:2)

Collectors.toList()创建一个新的List,因此您的代码应该如下所示,以便等同于Java 8代码:

List<Var> unassigned = new ArrayList<>();
Var grabNear;
for(int i = 0; i < assigned.size(); ++i)
{
    grabNear = assigned.get(i);
    if(!grabNear.isAssigned())
    {
        unassigned.add(grabNear);
    }
}

P.S。 Java 8代码在过滤方法调用中有错误。它应该是:

.filter((Var grabNear) -> !grabNear.isAssigned())

.filter(grabNear -> !grabNear.isAssigned())