遍历数组是我们经常遇到的,
你可能会想到1
for (i <- Array(1,2,3)) println(i)
但是,如果我们把元素转换为新的集合,应该使用for/yield
或者map
。
1 | //for yield |
当我们真正了解了集合类后,我们再也不会用for循环。
开始使用集合类中filter, foreach和map等方法,这样看起来更加简洁和简单。
对比一下scala和Java代码
1 | //scala 代码 |
实现同一功能的Java代码1
2
3
4
5
6Integer[] intArray = {1, 2, 3, 4, 5};
List<Integer> nums = Array.asList(intArray);
List<Integer> filteredNums = new LinkedList<Integer>();
for (int n: nums) {
if (n < 4) filteredNums.add(n);
}
我们就可以看出来Scala和Java在处理数据方面的差异。
如果你还不信的话,可以再看一个例子,体会scala的神奇之处。1
2
3//filter the items, then double them
val nums = List(1,2,3, 4, 5).filter(_ < 4).map(_ * 2)
//output nums: List[Int] = List(2, 4, 6)
你可以自己实现对应的Java代码。对比一下。