English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala Iterator(이터레이터)

Scala 집합

Scala Iterator(이터랙터)는 집합이 아니라, 집합에 접근하는 방법입니다.

이터랙터 it의 두 가지 기본 작업은 nexthasNext

호출 it.next() 이터랙터의 다음 요소를 반환하고 이터랙터 상태를 업데이트합니다.

호출 it.hasNext() 집합에 더 이상 요소가 있는지 확인하는 데 사용됩니다.

이터랙터 it가 모든 요소를 차례대로 반환하는 가장 간단한 방법은 while 루프를 사용하는 것입니다:

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

위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다:

$ scalac Test.scala 
$ scala Test
Baidu
Google
w3codebox
타obao

최대와 최소 요소를 찾기

이터레이터의 길이를 얻을 수 있습니다. it.minit.max 이터랙터에서 최대와 최소 요소를 찾는 방법을 설명하겠습니다.

object Test {
   def main(args: Array[String]) {
      val ita = Iterator(20,40,2,50,69, 90)
      val itb = Iterator(20,40,2,50,69, 90)
      
      println("最大元素是:" + println("최대 요소는:"
      ita.max) + println("최소 요소는:"
   }
}

위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다:

$ scalac Test.scala 
$ scala Test
itb.min)90
최대 요소는:2

최소 요소는:

이터레이터의 길이를 얻을 수 있습니다. it.size 또는 it.length 이터레이터에 있는 요소의 개수를 확인하는 메서드를 보여줍니다. 예제는 다음과 같습니다:

object Test {
   def main(args: Array[String]) {
      val ita = Iterator(20,40,2,50,69, 90)
      val itb = Iterator(20,40,2,50,69, 90)
      
      println("ita.size의 값: " + ita.size)
      println("itb.length의 값: " + itb.length)
   }
}

위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다:

$ scalac Test.scala 
$ scala Test
ita.size의 값: 6
itb.length의 값: 6

Scala Iterator 일반 메서드

아래 표는 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

반복자의 요소 중 인덱스가 x와 같은 첫 번째 요소를 반환합니다. 주의: 반복자는 이 요소를 건너뜁니다.

23

def indexWhere(p: (A) => Boolean): Int

반복자의 요소 중 인덱스가 조건 p를 만족하는 요소를 반환합니다. 주의: 반복자는 이 요소를 건너뜁니다.

24

def isEmpty: Boolean

it가 비어 있는지 확인합니다, 비어 있다면 true를 반환하고, 그렇지 않으면 false를 반환합니다(相当于hasNext)

25

def isTraversableAgain: Boolean

이 Iterator가 반복적으로 탐색될 수 있는지 테스트합니다

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을 추가하여 길이가 len에 도달할 때까지 패딩합니다

34

def patch(from: Int, patchElems: Iterator[B], replaced: Int): Iterator[B]

from 번째 요소에서 시작하여 replaced 개의 요소가 반복자의 요소로 대체되는 새로운 반복자를 반환합니다

35

def product: A

반복자가 지시하는 수치형 요소의 곱을 반환합니다

36

def sameElements(that: Iterator[_]): Boolean

반복자와 지정된 반복자 파라미터가 차례대로 같은 요소를 반환하는지�断합니다

37

def seq: Iterator[A]

집합의 시리즈 뷰를 반환합니다

38

def size: Int

반복자의 요소 수를 반환합니다

39

def slice(from: Int, until: Int): Iterator[A]

반복자가 가리키는 시퀀스에서 시작하는 from 번째 요소부터 until 번째 요소까지의 부분을 가리키는 새로운 반복자를 반환합니다

40

def sum: A

반복자가 지시하는 수치형 요소의 합을 반환합니다

41

def take(n: Int): Iterator[A]

n 개의 요소를 반환하는 새로운 이터레이터를 반환합니다。

42

def toArray: Array[A]

이터레이터가 가리키는 모든 요소를 배열에 넣고 반환합니다。

43

def toBuffer: Buffer[B]

이터레이터가 가리키는 모든 요소를 버퍼 Buffer에 복사합니다。

44

def toIterable: Iterable[A]

이 트래버서블이나 이터레이터의 모든 요소를 포함하는 Iterable을 반환합니다. 무한 이터레이터의 경우 종료하지 않습니다.

45

def toIterator: Iterator[A]

이터레이터의 모든 요소를 이터레이터 컨테이너에 넣고 반환합니다。

46

def toList: List[A]

이터레이터의 모든 요소를 목록에 넣고 반환합니다

47

def toMap[T, U]: Map[T, U]

이터레이터의 모든 키밸류를 Map에 넣고 반환합니다。

48

def toSeq: Seq[A]

이터레이터의 모든 요소를 Seq 컨테이너에 넣고 반환합니다。

49

def toString(): String

이터레이터를 문자열로 변환합니다

50

def zip[B](that: Iterator[B]): Iterator[(A, B)

이터레이터와 지정된 이터레이터 that 요소가 일일对应된 이진 튜플 시퀀스를 가리키는 새로운 이터레이터를 반환합니다

더 많은 메서드는 참조할 수 있습니다 API 문서

Scala 집합