diff --git a/saul-core/src/main/scala/edu/illinois/cs/cogcomp/saul/datamodel/node/Node.scala b/saul-core/src/main/scala/edu/illinois/cs/cogcomp/saul/datamodel/node/Node.scala index 22e244be..09fd3059 100644 --- a/saul-core/src/main/scala/edu/illinois/cs/cogcomp/saul/datamodel/node/Node.scala +++ b/saul-core/src/main/scala/edu/illinois/cs/cogcomp/saul/datamodel/node/Node.scala @@ -66,9 +66,9 @@ class Node[T <: AnyRef]( def filterNode(property: DiscreteProperty[T], value: String): Node[T] = { val node = new Node[T](this.keyFunc, this.tag) - node populate collection.filter { - nt => property.sensor(nt.apply) == value - }.toSeq.map(_.apply) + node populate collection.collect { + case nt if property.sensor(nt.apply) == value => nt.apply + } node } @@ -303,7 +303,7 @@ class JoinNode[A <: AnyRef, B <: AnyRef](val na: Node[A], val nb: Node[B], match private def matchAndAddChildrenA(a: A, train: Boolean = true, populateEdge: Boolean = true): Unit = { val instances = if (train) nb.getTrainingInstances else nb.getTestingInstances - for ((a, b) <- instances.filter(matcher(a, _)).map(a -> _)) { + for ((a, b) <- instances.collect { case b if matcher(a, b) => a -> b }) { if (!contains(a -> b)) this addInstance (a -> b, train, populateEdge) } @@ -311,7 +311,7 @@ class JoinNode[A <: AnyRef, B <: AnyRef](val na: Node[A], val nb: Node[B], match private def matchAndAddChildrenB(b: B, train: Boolean = true, populateEdge: Boolean = true): Unit = { val instances = if (train) na.getTrainingInstances else na.getTestingInstances - for ((a, b) <- instances.filter(matcher(_, b)).map(_ -> b)) { + for ((a, b) <- instances.collect { case a if matcher(a, b) => a -> b }) { if (!contains(a -> b)) this addInstance (a -> b, train, populateEdge) }