标签:item 需要 倒序 注意 bsp orm 无限 cal img
将两个集合进行 对偶元组合并,可以使用拉链
object Demo_031 { def main(args: Array[String]): Unit = { val list1 = List(1, 2 ,3) val list2 = List(4, 5, 6) val list3 = list1.zip(list2) // (1,4),(2,5),(3,6) println("list3=" + list3) } }
输出
注意事项
for(item<-list3){ print(item._1 + " " + item._2) //取出时,按照元组的方式取出即可 }
通过iterator方法从集合获得一个迭代器,通过while循环和for表达式对集合进行遍历
实例:
object Demo_032 { def main(args: Array[String]): Unit = { val iterator = List(1, 2, 3, 4, 5).iterator // 得到迭代器 println("--------遍历方式1 -----------------") while (iterator.hasNext) { println(iterator.next()) } println("--------遍历方式2 for -----------------") for (enum <- iterator) { println(enum) // } } }
stream是一个集合。这个集合,可以用于存放无穷多个元素,但是这无穷个元素并不会一次性生产出来,而是需要用到多大的区间,就会动态的生产,末尾元素遵循lazy规则(使用时才加载)
使用tail,会动态的向stream集合按规则生成新的元素
object Demo_033 { def main(args: Array[String]): Unit = { def numsForm(n: BigInt) : Stream[BigInt] = n #:: numsForm(n + 1) val stream1 = numsForm(1) println(stream1) // //取出第一个元素 println("head=" + stream1.head) // println(stream1.tail) //注意不能使用stream.last,否则会陷入无限循环 println(stream1) // } }
运行结果
实例:使用map映射stream的元素并进行一些计算
object Demo_034 { def main(args: Array[String]): Unit = { def numsForm(n: BigInt) : Stream[BigInt] = n #:: numsForm(n + 1) def multi(x:BigInt) : BigInt = { x * x } println(numsForm(5).map(multi)) //? (25,?) } }
输出
Stream的懒加载特性,也可以对其他集合应用view方法来得到类似的效果,具有如下特点:
实例:请找到1-100 中,数字倒序排列 和它本身相同的所有数。(1 2, 11, 22, 33 ...)
object Demo_035 { def main(args: Array[String]): Unit = { def eq(i: Int): Boolean = { i.toString.equals(i.toString.reverse) } //说明: 没有使用view val viewSquares1 = (1 to 100).filter(eq) println(viewSquares1) //使用view val viewSquares2 = (1 to 100).view.filter(eq) println(viewSquares2) } }
输出结果
应用案例 parallel
object Demo_036 {
def main(args: Array[String]): Unit = {
def method(i:Int): Unit ={
print("\t"+i)
}
(1 to 5).foreach(method)
println()
(1 to 5).par.foreach(method)//并行方式输出
}
}
输出
val result1 = (0 to 100).map{case _ => Thread.currentThread.getName} val result2 = (0 to 100).par.map{case _ => Thread.currentThread.getName} println(result1) println(result2)
标签:item 需要 倒序 注意 bsp orm 无限 cal img
原文地址:https://www.cnblogs.com/cosmos-wong/p/11441029.html