设为首页 加入收藏

TOP

Scala(四)
2023-07-23 13:24:52 】 浏览:591
Tags:Scala
;         case Person("Bob", 32) => println("Hi Bob!")             case Person(name, age) =>                println("Age: " + age + " year, name: " + name + "?")          }       }    }    // 样例类    case class Person(name: String, age: Int) }

使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类,经过优化以用于模式匹配。

迭代器

Scala Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法。迭代器 it 的两个基本操作是 nexthasNext。调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。调用 it.hasNext() 用于检测集合中是否还有元素。让迭代器 it 逐个返回所有元素最简单的方法是使用 while 循环:

object Test {
   def main(args: Array[String]) {
      val it = Iterator("Baidu", "Google", "Runoob", "Taobao")
      
      while (it.hasNext){
         println(it.next())
      }
   }
}

下表列出了Scala Iterator常用的方法:

序号 方法及描述
1 def hasNext: Boolean如果还有可返回的元素,返回true。
2 def next(): A返回迭代器的下一个元素,并且更新迭代器的状态
3 def ++(that: => Iterator[A]): Iterator[A]合并两个迭代器
4 def ++[B >: A](that :=> GenTraversableOnce[B]): Iterator[B]合并两个迭代器
5 def addString(b: StringBuilder): StringBuilder添加一个字符串到 StringBuilder b
6 def addString(b: StringBuilder, sep: String): StringBuilder添加一个字符串到 StringBuilder b,并指定分隔符
7 def buffered: BufferedIterator[A]迭代器都转换成 BufferedIterator
8 def contains(elem: Any): Boolean检测迭代器中是否包含指定元素
9 def copyToArray(xs: Array[A], start: Int, len: Int): Unit将迭代器中选定的值传给数组
10 def count(p: (A) => Boolean): Int返回迭代器元素中满足条件p的元素总数。
11 def drop(n: Int): Iterator[A]返回丢弃前n个元素新集合
12 def dropWhile(p: (A) => Boolean): Iterator[A]从左向右丢弃元素,直到条件p不成立
13 def duplicate: (Iterator[A], Iterator[A])生成两个能分别返回迭代器所有元素的迭代器。
14 def exists(p: (A) => Boolean): Boolean返回一个布尔值,指明迭代器元素中是否存在满足p的元素。
15 def filter(p: (A) => Boolean): Iterator[A]返回一个新迭代器 ,指向迭代器元素中所有满足条件p的元素。
16 def filterNot(p: (A) => Boolean): Iterator[A]返回一个迭代器,指向迭代器元素中不满足条件p的元素。
17 def find(p: (A) => Boolean): Option[A]返回第一个满足p的元素或None。注意:如果找到满足条件的元素,迭代器会被置于该元素之后;如果没有找到,会被置于终点。
18 def flatMap[B](f: (A) => GenTraversableOnce[B]): Iterator[B]针对迭代器的序列中的每个元素应用函数f,并返回指向结果序列的迭代器。
19 def forall(p: (A) => Boolean): Boolean返回一个布尔值,指明 it 所指元素是否都满足p。
20 def foreach(f: (A) => Unit): Unit在迭代器返回的每个元素上执行指定的程序 f
21 def hasDefiniteSize: Boolean如果迭代器的元素个数有限则返回 true(默认等同于 isEmpty)
22 def indexOf(elem: B): Int返回迭代器的元素中index等于x的第一个元素。注意:迭代器会越过这个元素。
23 def indexWhere(p: (A) => Boolean): Int返回迭代器的元素中下标满足条件p的元素。注意:迭代器会越过这个元素。
24 def isEmpty: Boolean检查it是否为空, 为空返回 true,否则返回false(与hasNext相反)。
25 def isTraversableAgain: BooleanTests whether this Iterator can be repeatedly traversed.
26 def length: Int返回迭代器元素的数量。
27 def map[B](f: (A) => B): Iterator[B]将 it 中的每个元素传入函数 f 后的结果生成新的迭代器。
28 def max: A返回迭代器迭代器元素中最大的元素。
29 def min: A返回迭代器迭代器元素中最小的元素。
30 def mkString: String将迭代器所有元素转换成字符串。
31 def mkString(sep: String): String将迭代器所有元素转换成字符串,并指定分隔符。
32 def nonEmpty: Boolean检查容器中是否包含元素(相当于 hasNext)。
33 def padTo(len: Int, elem: A): Iterator[A]首先返回迭代器所有元素,追加拷贝 elem 直到长度达到
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Scala面向对象 下一篇Scala简介和安装

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目