WrappedArray -> AbstractSeq -> AbstractIterable -> AbstractTraversable -> Traversable -> TraversableLike -> map方法
scala默认引入了scalaPredef类,Predef继承自scalaLowPriorityImplicits,而这个scalaLowPriorityImplicits中就定义了把各种类型的数组转换为scalacollectionmutableWrappedArray类型的隐式方法。
数组:
可变与不可变
不可变数组是指数组的长度是不可变的,但是数组对应的元素是可变的
可变数组的长度和元素都可以改变
不可变数组
val arr=Array(1,2) 完成初始化,且限定长度为2
val arr=Array Int 长度为5的Int类型数组
val arr=arr ++ arr1 只是通过显示申明过类型的数组才可以进行该 *** 作,不然报类型不匹配错误
可变数组
val c = scalacollectionmutableArrayBuffer Int
c可以任意的插值和更新值
List:
List是不可变的。长度无法再改变,但是对象可变。
val oneTwoThreeFour = oneTwo ::: threeFour list合并,与javalangString一样,返回的是一个新对象
1 :: twoThree 可以添加值,但只能向前添加
Tuple:
不可变多值对象,其特点是可以放入任意类型的数据
val pair = (99, "Luftballons") 内部生成一个Tuple2对象
println(pair_1) 访问是通过_N访问,N从1开始
println(pair_2)
Set:
对可变set和不可变set的分析
对于可变set和不可变set都可以通过 set+="str" 来添加一个元素,但是机制不同
对于不可变set来说,想添加元素变量必须是var修饰,因为不可变set的机制和List相同
返回的是一个新的Set,如果元素是val不可变,就不能接受新的Set。相反,如果是一个
可变集合,即使变量是val修饰的,还是可以添加元素,因为集合本身没有改变
Map:
对象映射关系集合,也分可变不可变,但是原理一样
var myMap=Map(1->"s",2->2) 可以初始化,也可以不
myMap+=(3->"q") 添加或者修改元素
对于所有集合,在初始化时进行赋值 *** 作,编译器会识别并给这个集合表明类型,如果全部是Int
那么这个集合就是Int类型,不可更改。如果插入时又有Int又有String,那么类型是any,可以
对任意类型 *** 作。
Array与ArrayBuffer的元素删除 *** 作
由于Array是不可变的,所以不能直接地对其元素进行删除 *** 作,只能通过重赋值或过滤生成新的Array的方式来删除不要的元素。
而ArrayBuffer是可变的,本身提供了很多元素的 *** 作,当然包括删除 *** 作。
具体实现看实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import scalacollectionmutableArrayBuffer
/
删除可变和不可变集合的元素的 *** 作
/
object DeleteOperators extends App {
/Array的size是不可以改变的,所以没有直接删除其元素的方法,
只能通过修改其元素值或者用另外的Array来取要的元素,过滤不要的元素,说白了就是通过过滤来删除Array中的元素,生存新的Array
/
val a = Array("apple", "banana", "cherry")
a(0)=""
a(1)=null
aforeach(println)
val x = Array("apple", "banana", "cherry")
val c = xfilter(!_contains("apple"))
cforeach(println)
/ArrayBuffer是可变的序列,也就是说它的size是可改变的,所以可以直接删除它的元素,它提供了响应的方法/
val b = ArrayBuffer('a','b','c','d','e','f','g','h','i','j','k','l')
b -= 'a' //删除1个指定元素;
b -= ('b','c') //删除多个指定元素
b --= Seq('d','e') //通过1个集合来删除元素(可以用Array,Set)
bremove(0) //通过index来删除元素
bremove(1,2) //通过index来删除多个元素
bclear() //清除所有元素
println(b)
}
以上就是关于scala中Array如何拥有map方法的隐式转换是如何转过来的全部的内容,包括:scala中Array如何拥有map方法的隐式转换是如何转过来的、scala数据结构与可变不可变、scala如何去掉数组中重读的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)