• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Scala --- Array方法二

武飞扬头像
快乐画饼
帮助1

目录

init  返回当前序列中不包含最后一个元素的序列

inits  对集合中的元素进行 init 操作

intersect  取两个集合的交集

isDefinedAt  判断序列中是否存在指定索引

isEmpty  判断当前序列是否为空

isTraversableAgain  判断序列是否可以反复遍历

iterator  对序列中的每个元素产生一个 iterator

last  取得数组中最后一个元素

lastIndexOf 取得序列中最后一个等于 elem 的元素的位置,索引值

lastIndexOfSlice 获取某值最后一次出现索引

lastIndexWhere 返回当前序列中最后一个满足条件的元素的索引

lastOption  返回当前数组中最后一个对象,

length  返回当前序列中元素个数

lengthCompare 参数和数组长度作比较

lift  按给定索引取值

map 对序列中的元素进行操作

max  返回序列中最大的元素

maxBy 返回序列中第一个符合条件的元素

min 返回序列中最小的元素

minBy  返回序列中第一个不符合条件的元素

mkString 将所有元素组合成一个字符串

mkString 

mkString(sep: String)  分隔符

mkString(start: String, sep: String, end: String) 分隔符和开头结尾

nonEmpty  判断序列不是空 

orElse 返回参数

padTo 扩充数列

par  将集合转换为并行集合

partition  拆分序列

patch  批量替换

permutations  排列组合

prefixLength  返回给定长度的序列长度

product  返回所有元素乘积的值

reduce  二元运算

reduceLeft  从左向右计算

reduceRight  从右向左计算

reduceLeftOption

reduceRightOption

repr  将序列对象转化为供解释器读取的形式

reverse  反转序列

reverseIterator  反向生成迭代

reverseMap  同 map 方向相反

runWith  判断参数是否在序列中


init  返回当前序列中不包含最后一个元素的序列

语法:def init: Array[T]
注解:返回当前序列中不包含最后一个元素的序列

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b = a.init
  3.  
    print(b.mkString(","))

学新通

inits  对集合中的元素进行 init 操作

语法:def inits: collection.Iterator[Array[T]]
注解:对集合中的元素进行 init 操作,该操作的返回值中, 第一个值是当前序列的副本,包含当前序列所有的元素,最后一个值是空的,对头尾之间的值进行init操作,上一步的结果作为下一步的操作对象

  1.  
    var e = Array(1, 2, 3)
  2.  
    e.inits.foreach(x => println(x.mkString(",")))

学新通

intersect  取两个集合的交集

语法:def intersect(that: collection.Seq[T]): Array[T]
注解:取两个集合的交集

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b = Array(3, 4, 5, 6, 7)
  3.  
    print(a.intersect(b).mkString(","))

学新通

isDefinedAt  判断序列中是否存在指定索引

语法:def isDefinedAt(idx: Int): Boolean
注解: 判断序列中是否存在指定索引

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    println(a.isDefinedAt(1))
  3.  
    print(a.isDefinedAt(10))

学新通

isEmpty  判断当前序列是否为空

语法:def isEmpty: Boolean
注解:判断当前序列是否为空

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    var b: Array[Int] = Array()
  3.  
    println(a.isEmpty)
  4.  
    print(b.isEmpty)

学新通

isTraversableAgain  判断序列是否可以反复遍历

语法:def isTraversableAgain: Boolean
注解:判断序列是否可以反复遍历(迭代器不能反复遍历,即判断是否是迭代器)
(该方法是GenTraversableOnce中的方法,对于 Traversables 一般返回true,对于 Iterators 返回 false,除非被复写)

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    print(a.isTraversableAgain)

学新通

iterator  对序列中的每个元素产生一个 iterator

语法:def iterator: collection.Iterator[T]
注解:对序列中的每个元素产生一个 iterator(任何集合都有iterator方法)

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    print(a.iterator)

 学新通

last  取得数组中最后一个元素

语法:def last: T
注解:取得序列中最后一个元素

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    print(a.last)

学新通

lastIndexOf 取得序列中最后一个等于 elem 的元素的位置,索引值

语法1:def lastIndexOf(elem: T): Int
注解1:取得序列中最后一个等于 elem 的元素的位置,索引值

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    print(a.lastIndexOf(3))

学新通

 语法2:def lastIndexOf(elem: T, end: Int): Int
注解2:取得序列中最后一个等于 elem 的元素的位置,可以指定在 end 之前的元素(包括end)中查找

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    println(a.lastIndexOf(3, 5))
  3.  
    print(a.lastIndexOf(3, 1))

学新通

lastIndexOfSlice 获取某值最后一次出现索引

语法1:def lastIndexOfSlice[B >: A](that: GenSeq[B]): Int
注解1:判断当前序列中是否包含序列 that,并返回最后一次出现该序列的位置处的索引

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7, 1, 2)
  2.  
    var b = Array(1, 2)
  3.  
    print(a.lastIndexOfSlice(b))

学新通  

语法2:def lastIndexOfSlice[B >: A](that: GenSeq[B], end: Int): Int
注解2::判断当前序列中是否包含序列 that,并返回最后一次出现该序列的位置处的索引,可以指定在 end 之前的元素(包括end)中查找

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7, 1, 2)
  2.  
    var b = Array(1, 2)
  3.  
    print(a.lastIndexOfSlice(b, 5))

学新通

lastIndexWhere 返回当前序列中最后一个满足条件的元素的索引

语法1:def lastIndexWhere(p: (T) ⇒ Boolean): Int
注解1:返回当前序列中最后一个满足条件 p 的元素的索引

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7, 1, 2)
  2.  
    print(a.lastIndexWhere(x => x < 8))

学新通 

语法2:def lastIndexWhere(p: (T) ⇒ Boolean, end: Int): Int
注解2:返回当前序列中最后一个满足条件 p 的元素的索引,可以指定在 end 之前(包括)的元素中查找

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7, 1, 2)
  2.  
    print(a.lastIndexWhere(x => x < 5, 5))

学新通 

lastOption  返回当前数组中最后一个对象,

语法:def lastOption: Option[T]
注解:返回当前序列中最后一个对象,若序列为空,返回None

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    print(a.lastOption)

学新通 

length  返回当前序列中元素个数

语法:def length: Int
注解:返回当前序列中元素个数

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    print(a.length)

 学新通

lengthCompare 参数和数组长度作比较

语法:def lengthCompare(len: Int): Int
注解:比较序列的长度和参数 len,根据二者的关系返回不同的值,比较规则是

  1.  
    var a = Array(1, 2, 3)
  2.  
    println(a.lengthCompare(2))
  3.  
    println(a.lengthCompare(3))
  4.  
    print(a.lengthCompare(5))

 学新通

比较规则:

x < 0 if this.length < len
x == 0 if this.length == len
x > 0 if this.length > len        
结果:this.length - len

lift  按给定索引取值

语法:def lift: A1 => Option[B1]
注解:按给定索引取值,返回Optition类型的值。

  1.  
    val a = Array(1, 2, 3, "a")
  2.  
    println(a.lift(1))
  3.  
    println(a.lift(3))
  4.  
    println(a.lift(5))

学新通  

map 对序列中的元素进行操作

语法:def map[B](f: (A) ⇒ B): Array[B]
注解:对序列中的元素进行 f 操作

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b = a.map(x => x * 10)
  3.  
    print(b.mkString(","))

 学新通

max  返回序列中最大的元素

语法:def max: A
注解:返回序列中最大的元素

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.max)

学新通  

maxBy 返回序列中第一个符合条件的元素

语法:def maxBy[B](f: (A) ⇒ B): A
注解:返回序列中第一个符合条件的元素

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.maxBy(x => x > 3))

学新通 

min 返回序列中最小的元素

语法:def min: A
注解:返回序列中最小的元素

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.mkString)

minBy  返回序列中第一个不符合条件的元素

语法:def minBy[B](f: (A) ⇒ B): A
注解:返回序列中第一个不符合条件的元素

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.maxBy(x => x > 3))

学新通 

mkString 将所有元素组合成一个字符串

mkString 

语法:def mkString: String 
注解:将所有元素组合成一个字符串

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.mkString)

 学新通

mkString(sep: String)  分隔符

语法:def mkString(sep: String): String
注解:将所有元素组合成一个字符串,以 sep 作为元素间的分隔符

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.mkString(","))

 学新通

mkString(start: String, sep: String, end: String) 分隔符和开头结尾

语法:def mkString(start: String, sep: String, end: String): String
注解:将所有元素组合成一个字符串,以 start 开头,以 sep 作为元素间的分隔符,以 end 结尾

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.mkString("{", ",", "}"))

学新通 

nonEmpty  判断序列不是空 

语法:def nonEmpty: Boolean
注解:判断序列不是空

  1.  
    var a = Array(1, 2, 3, 4, 5, 6, 7)
  2.  
    var b: Array[Int] = Array()
  3.  
    println(a.nonEmpty)
  4.  
    print(b.nonEmpty)

学新通  

orElse 返回参数

语法:def orElse[A1 <: Int, B1 >: Any](that: PartialFunction[A1,B1]): PartialFunction[A1,B1]
注解:参数:Some;返回:如果Option不为None返回Some否则返回参数的Some

  1.  
    val a = Some("Hello Option")
  2.  
    println(a.orElse(null))
  3.  
    val c = None
  4.  
    println(c.orElse(Some("New Value")))

学新通 

padTo 扩充数列

语法:def padTo(len: Int, elem: A): Array[A]
注解:后补齐序列,如果当前序列长度小于 len,那么新产生的序列长度是 len,多出的几个位值填充 elem,如果当前序列大于等于 len ,则返回当前序列

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    println(a.padTo(7, 0).mkString(","))
  3.  
    //需要一个长度为 7 的新序列,空出的填充 0

学新通

par  将集合转换为并行集合

语法:def par: ParArray[T]
注解:将集合转换为并行集合;返回一个并行实现,产生的并行序列,不能被修改。

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.par)

学新通 

partition  拆分序列

语法:def partition(p: (T) ⇒ Boolean): (Array[T], Array[T])
注解:偏函数;按条件将序列拆分成两个新的序列,满足条件的放到第一个序列中,其余的放到第二个序列。

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b: (Array[Int], Array[Int]) = a.partition(x => x > 2)
  3.  
    println(b._1.mkString(","))
  4.  
    print(b._2.mkString(","))

学新通 

var varue = (1, 2)
print(varue._1)

 学新通

patch  批量替换

语法:def patch(from: Int, that: GenSeq[A], replaced: Int): Array[A]
注解: 批量替换,从原序列的 from 处开始,后面的 replaced 数量个元素,将被替换成序列 that

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b = Array(3, 4, 6)
  3.  
    var c = a.patch(1, b, 2)
  4.  
    print(c.mkString(","))

学新通 

permutations  排列组合

语法:def permutations: collection.Iterator[Array[T]]
注解:排列组合,他与combinations不同的是,组合中的内容可以相同,但是顺序不能相同,combinations不允许包含的内容相同,即使顺序不一样

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b = a.permutations.toList
  3.  
    b.foreach(x => println(x.mkString(",")))

学新通 

combinations

var a = Array(1, 2, 3, 4, 5)

var c = a.combinations(5).toList

c.foreach(x => print(x.mkString(",")))

学新通

prefixLength  返回给定长度的序列长度

语法:def prefixLength(p: (T) ⇒ Boolean): Int
注解:给定一个条件 p,截止到第一个不满足条件的元素,返回一个前置数列的长度,这个数列中的元素都满足 p

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.prefixLength(x => x < 4))

学新通 

product  返回所有元素乘积的值

语法:def product: A
注解:返回所有元素乘积的值(只能是数值型)     

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    println(a.product)

学新通 

reduce  二元运算

语法:def reduce[A1 >: A](op: (A1, A1) ⇒ A1): A1
注解:对序列中的每个元素进行二元运算(一次取2个值),不需要初始值

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.reduce(_ _))

   学新通

  1.  
    def seq(m: Int, n: Int): Int = {
  2.  
    var s = "seq_exp=%d %d"
  3.  
    println(s.format(m, n))
  4.  
    return m n
  5.  
    }
  6.  
     
  7.  
    var a = Array(1, 2, 3, 4, 5)
  8.  
    var b = a.reduce(seq)
  9.  
    println(b)
  10.  
     
  11.  
    /**
  12.  
    * seq_exp=1 2
  13.  
    * seq_exp=3 3
  14.  
    * seq_exp=6 4
  15.  
    * seq_exp=10 5
  16.  
    */
学新通

reduceLeft  从左向右计算

语法:def reduceLeft[B >: A](op: (B, T) ⇒ B): B
注解:从左向右计算

  1.  
    var a = Array(1, 2, 3, 4)
  2.  
    println(a.reduceLeft(_ _))
  3.  
    print(a.reduceLeft(_ - _))

学新通 

reduceRight  从右向左计算

语法:def reduceRight[B >: A](op: (T, B) ⇒ B): B
注解:从右向左计算

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    println(a.reduceRight(_ _))
  3.  
    print(a.reduceRight(_ - _))

学新通 

reduceLeftOption

语法:def reduceLeftOption[B >: A](op: (B, T) ⇒ B): Option[B]
注解:计算Option,参考reduceLeft,防止空数组报错,若空,返回None

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    println(a.reduceLeftOption(_ _))
  3.  
    print(a.reduceLeftOption(_ - _))

学新通 

reduceRightOption

语法:def reduceRightOption[B >: A](op: (T, B) ⇒ B): Option[B]
注解:计算Option,参考reduceRight,防止空数组报错,若空,返回None

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    println(a.reduceRightOption(_ _))
  3.  
    print(a.reduceRightOption(_ - _))

学新通  

repr  将序列对象转化为供解释器读取的形式

语法:def repr: Array[A1]
注解:将序列对象转化为供解释器读取的形式

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.repr.mkString(","))

 学新通

reverse  反转序列

语法:def reverse: Array[T]
注解:反转序列

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.reverse.mkString(","))

学新通 

reverseIterator  反向生成迭代

语法:def reverseIterator: collection.Iterator[T]
注解:反向生成迭代

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    print(a.reverseIterator.mkString(","))

学新通 

reverseMap  同 map 方向相反

语法:def reverseMap[B](f: (A) ⇒ B): Array[B]
注解:同 map 方向相反
 

  1.  
    var a = Array(1, 2, 3, 4, 5)
  2.  
    var b = a.reverseMap(x => x 1)
  3.  
    println(b.mkString(","))

学新通 

runWith  判断参数是否在序列中

语法:def runWith[U](action: A1 => U): Int => Boolean
注解:执行偏函数,当参数不在定义域内时,返回false,否则返回true,并执行action

  1.  
    var b = Array.range(1, 20)
  2.  
    print(b.runWith(x => x match {
  3.  
    case x if x % 2 == 0 => x
  4.  
    })(17))

学新通 

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkhcfj
系列文章
更多 icon
同类精品
更多 icon
继续加载