scala中Array如何拥有map方法的隐式转换是如何转过来的

scala中Array如何拥有map方法的隐式转换是如何转过来的,第1张

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如何去掉数组中重读的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9312913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存