seems to do the same with and without the iterator 

```scala
scala> val l = List(1,2,3)
l: List[Int] = List(1, 2, 3)

scala> def filterMethod(x: Int): Boolean = {
     | println("invoked filterMethod")
     | true
     | }
filterMethod: (x: Int)Boolean

scala> for (x <- l if filterMethod(x)) { println("looking at " + x)
     | }
invoked filterMethod
looking at 1
invoked filterMethod
looking at 2
invoked filterMethod
looking at 3

scala> for (x <- l.iterator if filterMethod(x)) { println("looking at " + x)
     | }
invoked filterMethod
looking at 1
invoked filterMethod
looking at 2
invoked filterMethod
looking at 3
```