已解决
Scala---迭代器模式+Trait特质特性
来自网友在路上 166866提问 提问时间:2023-11-18 20:33:57阅读次数: 66
最佳答案 问答题库668位专家为你答疑解惑
Scala迭代器模式处理数据
scala中创建集合需要内存,集合与集合之间的转换时,每次转换生成新的集合时,新的集合也需要内存。如果有一个非常大的初始集合,需要经过多次转换,每次转换都生成一个新的集合,才能得到最终的结果,那么这时,在集合转换过程中内存开销非常大。Scala迭代器模式处理数据,很好的解决了内存占用大的问题。
Scala迭代器模式处理数据每次将集合的转换转变成了迭代器之间的转换,迭代器是不需要占用内存存储的,迭代器只是一个指针,指向了最初的原始数据,这样,数据处理过程中内存占用非常小。
迭代器模式处理示例:
//非迭代器模式处理,浪费内存
val list1 = List[String]("hello java","hello python","hello scala")
val list2 = list1.flatMap(one=>{one.split(" ")})
val list3 = list2.map(one=>{one+"#"})
list3.foreach(println)println("***********************")//迭代器模式处理,内存小
val list = List[String]("hello java","hello python","hello scala")
val iter1 = list.iterator
val iter2 = iter1.flatMap(one=>{one.split(" ")})
val iter3 = iter2.map(one=>{one+"#"})
while(iter3.hasNext){val one = iter3.next()println(one)}
Trait 特质特性
1、概念理解
Scala Trait(特质) 相当于java的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。
一般情况下Scala的类可以继承多个Trait,从结果来看就是实现了多重继承。第一个关键字使用extends,之后使用with。
Trait(特质)定义的方法与类类似,但它使用的关键字是trait。
2、举例:trait中带属性带方法实现
注意:
继承的多个trait中如果有同名的方法和属性,必须使用“override”重新定义。
2、trait中不可以传参数
trait Read {val readType = "Read"val gender = "m"def read(name:String){println(name+" is reading")}
}trait Listen {val listenType = "Listen"val gender = "m"def listen(name:String){println(name + " is listenning")}
}class Person() extends Read with Listen {override val gender = "f"
}object test {def main(args: Array[String]): Unit = {val person = new Person()person.read("lisi")person.listen("zhangsan")println(person.listenType)println(person.readType)println(person.gender)}}
3、举例:trait中带方法不实现
1.object Lesson_Trait2 {
2. def main(args: Array[String]): Unit = {
3. val p1 = new Point(1,2)
4. val p2 = new Point(1,3)
5. println(p1.isEqule(p2))
6. println(p1.isNotEqule(p2))
7. }
8.}
9.
10.trait Equle{
11. def isEqule(x:Any) :Boolean
12. def isNotEqule(x : Any) = {
13. !isEqule(x)
14. }
15.}
16.
17.class Point(x:Int, y:Int) extends Equle {
18. val xx = x
19. val yy = y
20.
21. def isEqule(p:Any) = {
22. p.isInstanceOf[Point] && p.asInstanceOf[Point].xx==xx
23. }
24.
25.}
查看全文
99%的人还看了
相似问题
- 【C++ STL】string类-----迭代器(什么是迭代器?迭代器分哪几类?迭代器的接口如何使用?)
- Python中的迭代器、生成器和装饰器
- Java集合大总结——Iterator(迭代器)接口
- Scala---迭代器模式+Trait特质特性
- Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据
- 25期代码随想录算法训练营第十四天 | 二叉树 | 递归遍历、迭代遍历
- 【机试题】LazyIterator迭代器懒加载问题
- 「算法小记」-2:矩阵链相乘的方案数【迭代/递归/动态规划/区域化DP/记忆化搜索】(C++ )
- 算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历
- 算法通关村第七关-黄金挑战二叉树迭代遍历
猜你感兴趣
版权申明
本文"Scala---迭代器模式+Trait特质特性":http://eshow365.cn/6-38651-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: LeetCode Hot100之十:239.滑动窗口最大值
- 下一篇: 01Urllib