Spec-Zone.ru › Scala 3.1

Класс scala.collection.DistinctBy

Исходный код

@SerialVersionUID(3L)
class DistinctBy[A, B](underlying: SomeIterableOps[A], f: A => B) extends AbstractView[A]

Просмотр, удаляющий дублируемые элементы, определяемые функцией преобразования f

Надтипы
класс AbstractView[A]
тракт View[A]
тракт Serializable
класс AbstractIterable[A]
тракт Iterable[A]
тракт IterableFactoryDefaults[A, View]
тракт IterableOps[A, View, View[A]]
тракт IterableOnceOps[A, View, View[A]]
тракт IterableOnce[A]
класс Object
тракт Matchable
класс Any

Конкретные методы

Исходный код
override def isEmpty: Boolean

Классы определений IterableOnceOps

Исходный код
def iterator: Iterator[A]

Исходный код
override def knownSize: Int

Классы определений IterableOnce

Наследуемые методы

Исходный код@inline
final def ++[B >: A](suffix: IterableOnce[B]): View[B]

Псевдоним для concat

Наследован от IterableOps

Исходный код@inline
final def addString(b: StringBuilder): StringBuilder

Добавляет все элементы этой коллекции в строку-построитель. Записываемый текст состоит из строковых представлений (с помощью метода toString) всех элементов этой коллекции без разделителя.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> val h = a.addString(b)
h: StringBuilder = 1234
Параметры значений
b

строковый построитель, в который добавляются элементы.

Возвращает

строковый построитель b, в который были добавлены элементы.

Наследован от IterableOnceOps

Исходный код@inline
final def addString(b: StringBuilder, sep: String): StringBuilder

Добавляет все элементы этой коллекции в строковый построитель, используя строку-разделитель. Записываемый текст состоит из строковых представлений (с помощью метода toString) всех элементов этой коллекции, разделенных строкой sep.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> a.addString(b, ", ")
res0: StringBuilder = 1, 2, 3, 4
Параметры значений
b

строковый построитель, в который добавляются элементы.

sep

строка-разделитель.

Возвращает

строковый построитель b, в который были добавлены элементы.

Наследован от IterableOnceOps

Исходный код
def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder

Добавляет все элементы этой коллекции в строковый построитель, используя начальную, конечную и разделительные строки. Записываемый текст начинается со строки start и заканчивается строкой end. Внутри строковые представления (с помощью метода toString) всех элементов этой коллекции разделены строкой sep.

Пример:

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> val b = new StringBuilder()
b: StringBuilder =

scala> a.addString(b , "List(" , ", " , ")")
res5: StringBuilder = List(1, 2, 3, 4)
Параметры значений
b

строковый построитель, в который добавляются элементы.

end

конечная строка.

sep

строка-разделитель.

start

начальная строка.

Возвращает

строковый построитель b, в который были добавлены элементы.

Наследован от IterableOnceOps

Исходный код
def collect[B](pf: PartialFunction[A, B]): View[B]

Наследован от IterableOps

Исходный код
def collectFirst[B](pf: PartialFunction[A, B]): Option[B]

Находит первый элемент коллекции, для которого заданная частичная функция определена, и применяет частичную функцию к нему.

Примечание: может не завершиться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.

Параметры значений
pf

частичная функция

Возвращает

значение Option, содержащее результат применения pf к первому значению, для которого она определена, или None если такового нет.

Пример

Seq("a", 1, 5L).collectFirst({ case x: Int => x*10 }) = Some(10)

Наследован от IterableOnceOps

Исходный код
def concat[B >: A](suffix: IterableOnce[B]): View[B]

Возвращает новую коллекцию с элементами из левого операнда, за которым следуют элементы из правого операнда. Тип элемента коллекции — это самый специфичный надкласс, охватывающий типы элементов двух операндов.

Параметры типов
B

тип элемента возвращаемой коллекции.

Параметры значений
suffix

перебираемая коллекция для добавления.

Возвращает

новая коллекция, содержащая все элементы этой коллекции, за которыми следуют все элементы suffix.

Наследован от IterableOps

Исходный код
def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Int

Копирует элементы в массив, возвращая количество скопированных элементов.

Заполняет заданный массив xs начиная с индекса start максимум len элементами этой коллекции.

Копирование прекращается, когда скопированы все элементы этой коллекции, достигнут конец массива или скопировано len элементов.

Тип параметров
B

тип элементов массива.

Параметры значений
len

максимальное количество копируемых элементов.

start

начальный индекс xs.

xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Повторное использование: после вызова этого метода необходимо отказаться от итератора, на котором он был вызван. Его использование не определено и может быть изменено.

Унаследовано от IterableOnceOps

Источник@deprecatedOverriding("Это должно всегда передаваться в 3-аргументную версию этого метода", since = "2.13.4")
def copyToArray[B >: A](xs: Array[B], start: Int): Int

Копирует элементы в массив, возвращая количество записанных элементов.

Заполняет заданный массив xs начиная с индекса start значениями из этого набора.

Копирование прекратится, как только будут скопированы все элементы этого набора или будет достигнут конец массива.

Тип параметров
B

тип элементов массива.

Параметры значений
start

начальный индекс xs.

xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Повторное использование: после вызова этого метода необходимо отказаться от итератора, на котором он был вызван. Его использование не определено и может быть изменено.

Унаследовано от IterableOnceOps

Источник@deprecatedOverriding("Это должно всегда передаваться в 3-аргументную версию этого метода", since = "2.13.4")
def copyToArray[B >: A](xs: Array[B]): Int

Копирует элементы в массив, возвращая количество записанных элементов.

Заполняет заданный массив xs начиная с индекса start значениями из этого набора.

Копирование прекратится, как только будут скопированы все элементы этого набора или будет достигнут конец массива.

Тип параметров
B

тип элементов массива.

Параметры значений
xs

массив для заполнения.

Возвращает

количество элементов, записанных в массив

Примечание

Повторное использование: после вызова этого метода необходимо отказаться от итератора, на котором он был вызван. Его использование не определено и может быть изменено.

Унаследовано от IterableOnceOps

Источник
def corresponds[B](that: IterableOnce[B])(p: (A, B) => Boolean): Boolean

Проверяет, соответствуют ли все элементы итератора этого набора соответствующим элементам другого набора, удовлетворяя условию предиката.

Примечание: не будет завершаться для наборов бесконечного размера.

Тип параметров
B

тип элементов that

Параметры значений
p

предикат, который связывает элементы обоих наборов

that

другой набор

Возвращает

true если оба набора имеют одинаковую длину и p(x, y) равен true для всех соответствующих элементов x этого итератора и y that, в противном случае false

Унаследовано от IterableOnceOps

Источник
def count(p: A => Boolean): Int

Подсчитывает количество элементов в наборе, удовлетворяющих предикату.

Примечание: не будет завершаться для наборов бесконечного размера.

Параметры значений
p

предикат для проверки элементов.

Возвращает

количество элементов, удовлетворяющих предикату p.

Унаследовано от IterableOnceOps

Источник
def drop(n: Int): View[A]

Унаследовано от IterableOps

Источник
def dropRight(n: Int): View[A]

Выбирает все элементы, кроме последних n.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен.

Параметры значений
n

количество элементов для удаления из этого набора.

Возвращает

набор, состоящий из всех элементов этого набора, кроме последних n элементов, или же пустой набор, если у этого набора меньше n элементов. Если n отрицательно, не удалять элементы.

Унаследовано от IterableOps

Источник
def dropWhile(p: A => Boolean): View[A]

Унаследовано от IterableOps

Источник
override def empty: View[A]

Классы-определения View -> IterableFactoryDefaults -> IterableOps
Унаследовано от View

Источник
def exists(p: A => Boolean): Boolean

Проверяет, выполняется ли предикат хотя бы для одного элемента этого набора.

Примечание: может не завершиться для наборов бесконечного размера.

Параметры значений
p

предикат для проверки элементов.

Возвращает

true если заданный предикат p выполняется для хотя бы одного элемента этого набора, в противном случае false

Унаследовано от IterableOnceOps

Источник
def filter(pred: A => Boolean): View[A]

Унаследовано от IterableOps

Источник
def filterNot(pred: A => Boolean): View[A]

Унаследовано от IterableOps

Источник
def find(p: A => Boolean): Option[A]

Находит первый элемент набора, удовлетворяющий предикату, если таковой имеется.

Примечание: может не завершиться для наборов бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базового набора не упорядочен.

Параметры значений
p

предикат для проверки элементов.

Возвращает

значение варианта, содержащее первый элемент в наборе, который удовлетворяет p, или None если такового нет.

Унаследовано от IterableOnceOps
END_OF_DOCUMENT_MARKER

Источник
def flatMap[B](f: A => IterableOnce[B]): View[B]

Унаследовано от IterableOps

Источник
def flatten[B](implicit asIterable: A => IterableOnce[B]): View[B]

Унаследовано от IterableOps

Источник
def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1

Складывает элементы этой коллекции, используя заданный ассоциативный бинарный оператор. Реализация по умолчанию в IterableOnce эквивалентна foldLeft, но может быть переопределена для более эффективного порядка обхода.

Порядок выполнения операций над элементами не определен и может быть не детерминированным.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
A1

параметр типа для бинарного оператора, являющийся супертипом A.

Параметры значения
op

бинарный оператор, который должен быть ассоциативным.

z

нейтральный элемент для операции fold; может быть добавлен к результату произвольное количество раз, и не должен изменять результат (например, Nil для конкатенации списков, 0 для сложения или 1 для умножения).

Возвращает

результат применения оператора fold op между всеми элементами и z, или z если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def foldLeft[B](z: B)(op: (B, A) => B): B

Применяет бинарный оператор к начальному значению и всем элементам этой коллекции, слева направо.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен или оператор не является ассоциативным и коммутативным.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

z

начальное значение.

Возвращает

результат вставки op между последовательными элементами этой коллекции, слева направо с начальным значением z слева: op(...op(z, x1), x2, ..., xn), где x1, ..., xn - это элементы этой коллекции. Возвращает z если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def foldRight[B](z: B)(op: (A, B) => B): B

Применяет бинарный оператор ко всем элементам этой коллекции и начальному значению, справа налево.

Примечание: не завершится для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен или оператор не является ассоциативным и коммутативным.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

z

начальное значение.

Возвращает

результат вставки op между последовательными элементами этой коллекции, справа налево с начальным значением z справа: op(x1, op(x2, ... op(xn, z)...)), где x1, ..., xn - это элементы этой коллекции. Возвращает z если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def forall(p: A => Boolean): Boolean

Проверяет, выполняется ли предикат для всех элементов этой коллекции.

Примечание: может не завершиться для коллекций бесконечного размера.

Параметры значения
p

предикат, используемый для проверки элементов.

Возвращает

true если эта коллекция пуста или заданный предикат p выполняется для всех элементов этой коллекции, в противном случае false.

Унаследовано от IterableOnceOps

Источник
def foreach[U](f: A => U): Unit

Применяет f к каждому элементу для получения побочных эффектов. Примечание: параметр [U] необходим для помощи в инференции типов scalac.

Унаследовано от IterableOnceOps

Источник
protected def fromSpecific(coll: IterableOnce[A]): View[A]

Унаследовано от IterableFactoryDefaults

Источник
def groupBy[K](f: A => K): Map[K, View[A]]

Разделяет эту итерируемую коллекцию на карту итерируемых коллекций в соответствии с функцией-дискриминатором.

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычислены.

Параметры типа
K

тип ключей, возвращаемых функцией-дискриминатором.

Параметры значения
f

функция-дискриминатор.

Возвращает

Карта, где ключи сопоставлены с итерируемыми коллекциями, при этом выполняется следующее инвариантное свойство:

(xs groupBy f)(k) = xs filter (x => f(x) == k)

То есть, каждый ключ k связан с итерируемой коллекцией тех элементов x, для которых f(x) равно k.

Унаследовано от IterableOps

Источник
def groupMap[K, B](key: A => K)(f: A => B): Map[K, View[B]]

Разделяет эту итерируемую коллекцию на карту итерируемых коллекций в соответствии с функцией-дискриминатором key. Каждый элемент в группе преобразуется в значение типа B с помощью функции value.

Эквивалентно groupBy(key).mapValues(_.map(f)), но более эффективно.

case class User(name: String, age: Int)

def namesByAge(users: Seq[User]): Map[Int, Seq[String]] =
  users.groupMap(_.age)(_.name)

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычислены.

Параметры типа
B

тип значений, возвращаемых функцией преобразования

K

тип ключей, возвращаемых функцией-дискриминатором

Параметры значения
f

функция преобразования элементов

key

функция-дискриминатор

Унаследовано от IterableOps

Источник
def groupMapReduce[K, B](key: A => K)(f: A => B)(reduce: (B, B) => B): Map[K, B]

Разделяет эту итерируемую коллекцию на карту в соответствии с функцией-дискриминатором key. Все значения с одинаковым дискриминатором затем преобразуются с помощью функции f и затем сводятся к одному значению с помощью функции reduce.

Эквивалентно groupBy(key).mapValues(_.map(f).reduce(reduce)), но более эффективно.

def occurrences[A](as: Seq[A]): Map[A, Int] =
  as.groupMapReduce(identity)(_ => 1)(_ + _)

Примечание: даже при применении к представлению или ленивой коллекции элементы всегда будут принудительно вычислены.

Унаследовано от IterableOps

Источник
def grouped(size: Int): Iterator[View[A]]

Разделяет элементы на итерируемые коллекции фиксированного размера.

Параметры значения
size

количество элементов в группе

Возвращает

Итератор, генерирующий итерируемые коллекции размером size, за исключением последней, которая будет меньше размера size, если элементы не делятся равномерно.

См. также

scala.collection.Iterator, метод grouped

Унаследовано от IterableOps

Источник
def head: A

Выбирает первый элемент этой итерируемой коллекции.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не является упорядоченным.

Возвращает

первый элемент этой итерируемой коллекции.

Исключение
NoSuchElementException

если итерируемая коллекция пуста.

Унаследовано от IterableOps

Источник
def headOption: Option[A]

Выбирает первый элемент по желанию.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не является упорядоченным.

Возвращает

первый элемент этой итерируемой коллекции, если она не пуста, None если она пуста.

Унаследовано от IterableOps

Источник
def init: View[A]

Начальная часть коллекции без последнего элемента.

Примечание: даже при применении к представлению или ленивой коллекции она всегда принудительно вычисляет элементы.

Унаследовано от IterableOps

Источник
def inits: Iterator[View[A]]

Итерируется по начальным частям этой итерируемой коллекции. Первое значение будет этой итерируемой коллекцией, а последнее — пустой итерируемой коллекцией, промежуточные значения — результаты последовательных применений init.

Примечание: даже при применении к представлению или ленивой коллекции она всегда принудительно вычисляет элементы.

Возвращает

итератор по всем начальным частям этой итерируемой коллекции

Пример

List(1,2,3).inits = Iterator(List(1,2,3), List(1,2), List(1), Nil)

Унаследовано от IterableOps

Источник
override def isTraversableAgain: Boolean

Определяющие классы IterableOps -> IterableOnceOps
Унаследовано от IterableOps

Источник
override def iterableFactory: IterableFactory[View]

Определяющие классы View -> Iterable -> IterableOps
Унаследовано от View

Источник
def last: A

Выбирает последний элемент.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не является упорядоченным.

Возвращает

Последний элемент этой итерируемой коллекции.

Исключение
NoSuchElementException

Если итерируемая коллекция пуста.

Унаследовано от IterableOps

Источник
def lastOption: Option[A]

Выбирает последний элемент по желанию.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не является упорядоченным.

Возвращает

последний элемент этой итерируемой коллекции, если она не пуста, None если она пуста.

Унаследовано от IterableOps

Источник
def lazyZip[B](that: Iterable[B]): LazyZip2[A, B, DistinctBy[A, B]]

Аналогично zip за исключением того, что элементы в каждой коллекции не потребляются, пока над возвращенным LazyZip2 декоратором не вызывается строгое действие.

Вызовы lazyZip можно цеплять, чтобы поддерживать более высокие арности (до 4) без затрат на создание и деконструкцию промежуточных кортежей.

val xs = List(1, 2, 3)
val res = (xs lazyZip xs lazyZip xs lazyZip xs).map((a, b, c, d) => a + b + c + d)
// res == List(4, 8, 12)
Параметры типа
B

тип второго элемента в каждой возможной паре

Параметры значения
that

итерируемый объект, предоставляющий второй элемент каждой возможной пары

Возвращает

декоратор LazyZip2, который позволяет выполнять строгие операции над лениво вычисляемыми парами или цепными вызовами lazyZip. Также поддерживается неявное преобразование в Iterable[(A, B)].

Унаследовано от Iterable

Источник
def map[B](f: A => B): View[B]

Унаследовано от IterableOps

Источник
def max[B >: A](implicit ord: Ordering[B]): A

Находит наибольший элемент.

Примечание: не будет завершаться для коллекций бесконечного размера.

Параметры типа
B

тип, по которому определено упорядочение.

Параметры значения
ord

упорядочение для сравнения элементов.

Возвращает

наибольший элемент этой коллекции относительно упорядочения ord.

Исключение
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def maxBy[B](f: A => B)(implicit cmp: Ordering[B]): A

Находит первый элемент, который дает наибольшее значение, измеренное функцией f.

Примечание: не будет завершаться для коллекций бесконечного размера.

Параметры типа
B

тип результата функции f.

Параметры значения
cmp

упорядочение для сравнения элементов.

f

функция измерения.

Возвращает

первый элемент этой коллекции с наибольшим значением, измеренным функцией f, относительно упорядочения cmp.

Исключение
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def maxByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A]

Находит первый элемент, который дает наибольшее значение, измеренное функцией f.

Примечание: не будет завершаться для коллекций бесконечного размера.

Параметры типа
B

тип результата функции f.

Параметры значения
cmp

упорядочение для сравнения элементов.

f

функция измерения.

Возвращает

значение option, содержащее первый элемент этой коллекции с наибольшим значением, измеренным функцией f, относительно упорядочения cmp.

Унаследовано от IterableOnceOps

Source
def maxOption[B >: A](implicit ord: Ordering[B]): Option[A]

Находит наибольший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется порядок.

Значения параметров
ord

Порядок, используемый для сравнения элементов.

Возвращает

значение Option, содержащее наибольший элемент этой коллекции относительно порядка ord.

Унаследовано от IterableOnceOps

Source
def min[B >: A](implicit ord: Ordering[B]): A

Находит наименьший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется порядок.

Значения параметров
ord

Порядок, используемый для сравнения элементов.

Возвращает

наименьший элемент этой коллекции относительно порядка ord.

Издаёт исключение
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Source
def minBy[B](f: A => B)(implicit cmp: Ordering[B]): A

Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Значения параметров
cmp

Порядок, используемый для сравнения элементов.

f

Функция измерения.

Возвращает

первый элемент этой коллекции с наименьшим значением, измеренным функцией f относительно порядка cmp.

Издаёт исключение
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Source
def minByOption[B](f: A => B)(implicit cmp: Ordering[B]): Option[A]

Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип результата функции f.

Значения параметров
cmp

Порядок, используемый для сравнения элементов.

f

Функция измерения.

Возвращает

значение Option, содержащее первый элемент этой коллекции с наименьшим значением, измеренным функцией f относительно порядка cmp.

Унаследовано от IterableOnceOps

Source
def minOption[B >: A](implicit ord: Ordering[B]): Option[A]

Находит наименьший элемент.

Примечание: не завершится для коллекций бесконечного размера.

Параметры типа
B

Тип, по которому определяется порядок.

Значения параметров
ord

Порядок, используемый для сравнения элементов.

Возвращает

значение Option, содержащее наименьший элемент этой коллекции относительно порядка ord.

Унаследовано от IterableOnceOps

Source@inline
final def mkString: String

Отображает все элементы этой коллекции в строке.

Делегирует вызов addString, который можно переопределить.

Возвращает

строковое представление этой коллекции. В результирующей строке строковые представления (относительно метода toString) всех элементов этой коллекции следуют друг за другом без разделителей.

Унаследовано от IterableOnceOps

Источник@inline
final def mkString(sep: String): String

Отображает все элементы этой коллекции в строке с использованием разделителя.

Делегирует вызов addString, который можно переопределить.

Параметры
sep

разделитель.

Возвращает

строковое представление этой коллекции. В результирующей строке строковые представления (относительно метода toString) всех элементов этой коллекции разделяются строкой sep.

Пример

List(1, 2, 3).mkString("|") = "1|2|3"

Унаследовано от IterableOnceOps

Источник
final def mkString(start: String, sep: String, end: String): String

Отображает все элементы этой коллекции в строке с использованием начальной, конечной и разделительной строк.

Делегирует вызов addString, который можно переопределить.

Параметры
end

конечная строка.

sep

разделитель.

start

начальная строка.

Возвращает

строковое представление этой коллекции. Результирующая строка начинается со строки start и заканчивается строкой end. Внутри строковые представления (относительно метода toString) всех элементов этой коллекции разделяются строкой sep.

Пример

List(1, 2, 3).mkString("(", "; ", ")") = "(1; 2; 3)"

Унаследовано от IterableOnceOps

Источник
protected def newSpecificBuilder: Builder[A, View[A]]

Унаследовано от IterableFactoryDefaults

Источник@deprecatedOverriding("nonEmpty is defined as !isEmpty; override isEmpty instead", "2.13.0")
def nonEmpty: Boolean

Проверяет, не пуста ли коллекция.

Возвращает

true если коллекция содержит по крайней мере один элемент, false в противном случае.

Унаследовано от IterableOnceOps

Источник
def partition(p: A => Boolean): (View[A], View[A])

Пара, первая — все элементы, удовлетворяющие предикату p, вторая — все элементы, которые не удовлетворяют. Интересно тем, что разделит коллекцию на две части.

Реализация по умолчанию, предоставленная здесь, требует двух проходов по коллекции. Строгие коллекции имеют переопределенную версию partition в StrictOptimizedIterableOps, которая требует только одного прохода.

Унаследовано от IterableOps

Source
def partitionMap[A1, A2](f: A => Either[A1, A2]): (View[A1], View[A2])

Применяет функцию f к каждому элементу коллекции и возвращает пару коллекций: первая содержит значения, возвращённые f, заключённые в scala.util.Left, а вторая — значения, заключённые в scala.util.Right.

Пример:

val xs = Iterable(1, "one", 2, "two", 3, "three") partitionMap {
 case i: Int => Left(i)
 case s: String => Right(s)
}
// xs == (Iterable(1, 2, 3),
//        Iterable(one, two, three))
Параметры типа
A1

тип элементов первой результирующей коллекции

A2

тип элементов второй результирующей коллекции

Параметры значения
f

функция 'разделения', которая сопоставляет элементы этой итерируемой коллекции с scala.util.Either

Возвращаемое значение

пара итерируемых коллекций: первая содержит значения, возвращённые f, заключённые в scala.util.Left, а вторая — значения, заключённые в scala.util.Right.

Наследуется от IterableOps

Source
def product[B >: A](implicit num: Numeric[B]): B

Перемножает элементы этой коллекции.

Примечание: не будет завершаться для коллекций бесконечного размера.

Параметры типа
B

тип результирующего значения операции *.

Параметры значения
num

явный параметр, определяющий набор арифметических операций, включающий операцию *, используемую при формировании произведения.

Возвращаемое значение

произведение всех элементов этой коллекции относительно операции * в num.

Наследуется от IterableOnceOps

Source
def reduce[B >: A](op: (B, B) => B): B

Сокращает элементы этой коллекции, используя заданный ассоциативный бинарный оператор.

Порядок выполнения операций над элементами не определён и может быть не детерминированным.

Параметры типа
B

Параметр типа для бинарного оператора, являющийся надтипом A.

Параметры значения
op

Бинарный оператор, который должен быть ассоциативным.

Возвращаемое значение

Результат применения оператора reduce op между всеми элементами, если коллекция не пуста.

Исключения
UnsupportedOperationException

если эта коллекция пустая.

Наследуется от IterableOnceOps

Source
def reduceLeft[B >: A](op: (B, A) => B): B

Применяет бинарный оператор ко всем элементам этой коллекции слева направо.

Примечание: не будет завершаться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен или оператор не ассоциативен и не коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращаемое значение

результат вставки op между последовательными элементами этой коллекции слева направо: op( op( ... op(x1, x2) ..., xn-1), xn), где x1, ..., xn — элементы этой коллекции.

Исключения
UnsupportedOperationException

если эта коллекция пустая.

Наследуется от IterableOnceOps

Source
def reduceLeftOption[B >: A](op: (B, A) => B): Option[B]

Опционально применяет бинарный оператор ко всем элементам этой коллекции слева направо.

Примечание: не будет завершаться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен, или оператор не ассоциативен и не коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

значение типа Option, содержащее результат reduceLeft(op), если коллекция непуста, None в противном случае.

Унаследовано от IterableOnceOps

Источник
def reduceOption[B >: A](op: (B, B) => B): Option[B]

Сводит элементы этой коллекции, если они есть, используя указанный ассоциативный бинарный оператор.

Порядок выполнения операций над элементами не определен и может быть недетерминированным.

Параметры типа
B

параметр типа для бинарного оператора, супертип A.

Параметры значения
op

бинарный оператор, который должен быть ассоциативным.

Возвращает

значение типа Option, содержащее результат применения оператора reduce op между всеми элементами, если коллекция непуста, и None в противном случае.

Унаследовано от IterableOnceOps

Источник
def reduceRight[B >: A](op: (A, B) => B): B

Применяет бинарный оператор ко всем элементам этой коллекции, слева направо.

Примечание: не будет завершаться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции упорядочен или оператор ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

результат вставки op между последовательными элементами этой коллекции, справа налево: op(x1, op(x2, ..., op(xn-1, xn)...)), где x1, ..., xn - элементы этой коллекции.

Исключения
UnsupportedOperationException

если эта коллекция пуста.

Унаследовано от IterableOnceOps

Источник
def reduceRightOption[B >: A](op: (A, B) => B): Option[B]

Необязательно применяет бинарный оператор ко всем элементам этой коллекции, справа налево.

Примечание: не будет завершаться для коллекций бесконечного размера.

Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции упорядочен или оператор ассоциативен и коммутативен.

Параметры типа
B

тип результата бинарного оператора.

Параметры значения
op

бинарный оператор.

Возвращает

значение типа Option, содержащее результат reduceRight(op), если эта коллекция непуста, None в противном случае.

Унаследовано от IterableOnceOps

Источник
protected def reversed: Iterable[A]

Унаследовано от IterableOnceOps

Источник
def scan[B >: A](z: B)(op: (B, B) => B): View[B]

Вычисляет префиксное сканирование элементов коллекции.

Примечание: нейтральный элемент z может применяться более одного раза.

Параметры типа
B

тип элементов результирующего набора

Параметры значений
op

ассоциативный оператор для сканирования

z

нейтральный элемент для оператора op

Возвращает

новый итерируемый набор, содержащий префиксное сканирование элементов в этом итерируемом наборе

Унаследовано от IterableOps

Исходный код
def scanLeft[B](z: B)(op: (B, A) => B): View[B]

Унаследовано от IterableOps

Исходный код
def scanRight[B](z: B)(op: (A, B) => B): View[B]

Создает набор, содержащий кумулятивные результаты применения оператора справа налево. Голова набора — это последний кумулятивный результат.

Примечание: не завершит работу для наборов бесконечного размера.

Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен.

Примечание: даже при применении к представлению или ленивому набору он всегда будет принудительно вычислять элементы.

Пример:

List(1, 2, 3, 4).scanRight(0)(_ + _) == List(10, 9, 7, 4, 0)
Параметры типа
B

тип элементов в результирующем наборе

Параметры значений
op

бинарный оператор, применяемый к промежуточному результату и элементу

z

начальное значение

Возвращает

набор с промежуточными результатами

Унаследовано от IterableOps

Исходный код
def size: Int

Размер этого набора.

Примечание: не завершит работу для наборов бесконечного размера.

Возвращает

количество элементов в этом наборе.

Унаследовано от IterableOnceOps

Исходный код
def sizeCompare(that: Iterable[_]): Int

Сравнивает размер этого итерируемого набора с размером другого Iterable.

Параметры значений
that

другой Iterable, размер которого сравнивается с размером этого итерируемого набора.

Возвращает

Значение x, где

x <  0       if this.size <  that.size
x == 0       if this.size == that.size
x >  0       if this.size >  that.size

Метод, реализованный здесь, не вызывает size напрямую; его время выполнения — O(this.size min that.size) вместо O(this.size + that.size). Метод следует переопределить, если вычисление size является быстрым, а knownSize возвращает -1.

Унаследовано от IterableOps

Исходный код
def sizeCompare(otherSize: Int): Int

Сравнивает размер этого итерируемого набора со значением.

Параметры значений
otherSize

тестовое значение, которое сравнивается с размером.

Возвращает

Значение x, где

x <  0       if this.size <  otherSize
x == 0       if this.size == otherSize
x >  0       if this.size >  otherSize

Метод, реализованный здесь, не вызывает size напрямую; его время выполнения — O(size min otherSize) вместо O(size). Метод следует переопределить, если вычисление size является быстрым, а knownSize возвращает -1.

См. также

sizeIs

Унаследовано от IterableOps

Исходный код@inline
final def sizeIs: SizeCompareOps

Возвращает значение класса, содержащее операции для сравнения размера этого итерируемого набора со значением.

Эти операции реализованы на основе sizeCompare(Int) и позволяют использовать следующие более удобочитаемые выражения:

this.sizeIs < size     // this.sizeCompare(size) < 0
this.sizeIs <= size    // this.sizeCompare(size) <= 0
this.sizeIs == size    // this.sizeCompare(size) == 0
this.sizeIs != size    // this.sizeCompare(size) != 0
this.sizeIs >= size    // this.sizeCompare(size) >= 0
this.sizeIs > size     // this.sizeCompare(size) > 0
Унаследовано от IterableOps

Исходный код
def slice(from: Int, until: Int): View[A]

Унаследовано от IterableOps

Исходный код
def sliding(size: Int, step: Int): Iterator[View[A]]

Группирует элементы в блоки фиксированного размера, пропуская "скользящее окно" по ним (в отличие от разбиения на части, как это делается в grouped.)

Возвращаемый итератор будет пустым, если он вызывается для пустого набора. Последний элемент, который производит итератор, может быть меньше размера окна, если исходный набор не исчерпан окном перед ним, а его последний элемент не пропущен шагом перед ним.

Параметры значений
size

количество элементов в группе

step

расстояние между первыми элементами последовательных групп

Возвращает

Итератор, производящий итерируемые наборы размера size, за исключением последнего элемента (который может быть единственным элементом), который будет меньше, если осталось меньше size элементов для группировки.

См. также

scala.collection.Iterator, метод sliding

Пример

List(1, 2, 3, 4, 5).sliding(2, 2) = Iterator(List(1, 2), List(3, 4), List(5))

List(1, 2, 3, 4, 5, 6).sliding(2, 3) = Iterator(List(1, 2), List(4, 5))

Унаследовано от IterableOps

Исходный код
def sliding(size: Int): Iterator[View[A]]

Группирует элементы в блоки фиксированного размера, пропуская "скользящее окно" по ним (в отличие от разбиения на части, как это делается в grouped.)

Пустой набор возвращает пустой итератор, а набор, содержащий меньше элементов, чем размер окна, возвращает итератор, который произведет исходный набор как свой единственный элемент.

Параметры значений
size

количество элементов в группе

Возвращает

Итератор, производящий итерируемые наборы размера size, за исключением набора с менее чем size элементами, который возвращает итератор, который производит исходный набор как свой единственный элемент.

См. также

scala.collection.Iterator, метод sliding

Пример

List().sliding(2) = empty iterator

List(1).sliding(2) = Iterator(List(1))

List(1, 2).sliding(2) = Iterator(List(1, 2))

List(1, 2, 3).sliding(2) = Iterator(List(1, 2), List(2, 3))

Унаследовано от IterableOps

Исходный код
def span(p: A => Boolean): (View[A], View[A])

Унаследовано от IterableOps

Исходный код
override def splitAt(n: Int): (View[A], View[A])

Классы-предки IterableOps -> IterableOnceOps
Унаследовано от IterableOps

Исходный код
def stepper[S <: Stepper[_]](implicit shape: StepperShape[A, S]): S

Возвращает scala.collection.Stepper для элементов этого набора.

Stepper позволяет создавать Java-поток для работы с набором, см. scala.jdk.StreamConverters. Для наборов, содержащих примитивные значения, Stepper можно использовать как итератор, который не упаковывает элементы.

END_OF_DOCUMENT_MARKER

Неявный параметр scala.collection.StepperShape определяет тип Stepper, возвращаемый в соответствии с типом элементов в этом наборе.

  • Для наборов Int, Short, Byte или Char, возвращается scala.collection.IntStepper

  • Для наборов Double или Float, возвращается scala.collection.DoubleStepper

  • Для наборов Long, возвращается scala.collection.LongStepper

  • Для любого другого типа элементов, возвращается scala.collection.AnyStepper

Обратите внимание, что этот метод переопределен в подклассах, и возвращаемый тип уточняется до S with EfficientSplit, например scala.collection.IndexedSeqOps.stepper. Для Stepper, помеченных как scala.collection.Stepper.EfficientSplit, конвертеры в scala.jdk.StreamConverters позволяют создавать параллельные потоки, тогда как обычные Stepper могут быть преобразованы только в последовательные потоки.

Унаследовано от IterableOnce

Исходный код
def sum[B >: A](implicit num: Numeric[B]): B

Суммирует элементы этого набора.

Примечание: не завершит работу для наборов бесконечного размера.

Параметры типа
B

тип результата операции +.

Параметры значения
num

неявный параметр, определяющий набор арифметических операций, включающий оператор +, используемый для вычисления суммы.

Возвращает

сумма всех элементов этого набора относительно оператора + в num.

Унаследовано от IterableOnceOps

Исходный код
def tail: View[A]

Остальная часть набора без первого элемента.

Унаследовано от IterableOps

Исходный код
def tails: Iterator[View[A]]

Проходит по хвостам этого итерируемого набора. Первое значение будет этим итерируемым набором, а последнее — пустым итерируемым набором, промежуточные значения — результаты последовательных применений tail.

Возвращает

итератор по всем хвостам этого итерируемого набора

Пример

List(1,2,3).tails = Iterator(List(1,2,3), List(2,3), List(3), Nil)

Унаследовано от IterableOps

Исходный код
def take(n: Int): View[A]

Унаследовано от IterableOps

Исходный код
def takeRight(n: Int): View[A]

Выбирает последние n элементов.

Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен.

Параметры значения
n

количество элементов для взятия из этого итерируемого набора.

Возвращает

итерируемый набор, состоящий только из последних n элементов этого итерируемого набора, или же всего итерируемого набора, если в нём меньше n элементов. Если n отрицательное, возвращает пустой итерируемый набор.

Унаследовано от IterableOps

Исходный код
def takeWhile(p: A => Boolean): View[A]

Берёт наибольший префикс элементов, удовлетворяющих предикату.

Примечание: может возвращать разные результаты при разных запусках, если тип базового набора не упорядочен.

Параметры значения
p

предикат для проверки элементов.

Возвращает

наибольший префикс этого итерируемого набора, элементы которого удовлетворяют предикату p.

Унаследовано от IterableOps

Исходный код
override def tapEach[U](f: A => U): View[A]

Классы определений IterableOps -> IterableOnceOps
Унаследовано от IterableOps

Исходный код
def to[C1](factory: Factory[A, C1]): C1

С помощью фабрики коллекций factory, преобразовать этот набор в соответствующее представление для текущего типа элементов A. Примеры использования:

xs.to(List) xs.to(ArrayBuffer) xs.to(BitSet) // для xs: Iterable[Int]

Унаследовано от IterableOnceOps

Исходный код
def toArray[B >: A : ClassTag]: Array[B]

Преобразовать набор в массив.

Примечание к реализации: НЕ вызывать Array.from из этого метода.

Унаследовано от IterableOnceOps

Исходный код@inline
final def toBuffer[B >: A]: Buffer[B]

Унаследовано от IterableOnceOps

Исходный код
def toIndexedSeq: IndexedSeq[A]

Унаследовано от IterableOnceOps

Исходный код
def toList: List[A]

Унаследовано от IterableOnceOps

Исходный код
def toMap[K, V](implicit ev: A <:< (K, V)): Map[K, V]

Унаследовано от IterableOnceOps

Исходный код
def toSeq: Seq[A]

Возвращает

Этот набор как Seq[A]. Это эквивалентно to(Seq), но может быть быстрее.

Унаследовано от IterableOnceOps

Исходный код
def toSet[B >: A]: Set[B]

Унаследовано от IterableOnceOps

Исходный код
override def toString: String

Классы определений View -> Iterable -> Any
Унаследовано от View

Источник
def toVector: Vector[A]

Унаследовано от IterableOnceOps

Источник
def transpose[B](implicit asIterable: A => Iterable[B]): View[View[B]]

Транспонирует это итерируемое множество итерируемых множеств в итерируемое множество итерируемых множеств.

Тип результирующего множества будет определяться статическим типом итерируемого множества. Например:

val xs = List(
           Set(1, 2, 3),
           Set(4, 5, 6)).transpose
// xs == List(
//         List(1, 4),
//         List(2, 5),
//         List(3, 6))

val ys = Vector(
           List(1, 2, 3),
           List(4, 5, 6)).transpose
// ys == Vector(
//         Vector(1, 4),
//         Vector(2, 5),
//         Vector(3, 6))

Примечание: даже при применении к представлению или ленивому множеству элементы всегда будут принудительно вычислены.

Параметры типа
B

тип элементов каждого итерируемого множества.

Параметры значения
asIterable

явное преобразование, которое утверждает, что тип элементов этого итерируемого множества является Iterable.

Возвращаемое значение

двумерное итерируемое множество итерируемых множеств, где n-я строка является n-м столбцом этого итерируемого множества.

Исключения
IllegalArgumentException

если все множества в этом итерируемом множестве не имеют одинаковый размер.

Унаследовано от IterableOps

Источник
def unzip[A1, A2](implicit asPair: A => (A1, A2)): (View[A1], View[A2])

Преобразует это итерируемое множество пар в два множества первой и второй половины каждой пары.

val xs = Iterable(
           (1, "one"),
           (2, "two"),
           (3, "three")).unzip
// xs == (Iterable(1, 2, 3),
//        Iterable(one, two, three))
Параметры типа
A1

тип первой половины пар элементов

A2

тип второй половины пар элементов

Параметры значения
asPair

явное преобразование, которое утверждает, что тип элементов этого итерируемого множества является парой.

Возвращаемое значение

пара итерируемых множеств, содержащая первую, соответственно вторую половину каждой пары элементов этого итерируемого множества.

Унаследовано от IterableOps

Источник
def unzip3[A1, A2, A3](implicit asTriple: A => (A1, A2, A3)): (View[A1], View[A2], View[A3])

Преобразует это итерируемое множество троек в три множества первого, второго и третьего элемента каждой тройки.

val xs = Iterable(
           (1, "one", '1'),
           (2, "two", '2'),
           (3, "three", '3')).unzip3
// xs == (Iterable(1, 2, 3),
//        Iterable(one, two, three),
//        Iterable(1, 2, 3))
Параметры типа
A1

тип первого члена троек элементов

A2

тип второго члена троек элементов

A3

тип третьего члена троек элементов

Параметры значения
asTriple

явное преобразование, которое утверждает, что тип элементов этого итерируемого множества является тройкой.

Возвращаемое значение

тройка итерируемых множеств, содержащая первый, второй, соответственно третий член каждой тройки элементов этого итерируемого множества.

Унаследовано от IterableOps

Источник
override def view: View[A]

Классы определений View -> IterableOps
Унаследовано от View

Источник
def withFilter(p: A => Boolean): WithFilter[A, View]

Создаёт нестрогий фильтр этого итерируемого множества.

Примечание: разница между c filter p и c withFilter p заключается в том, что первый создаёт новое множество, а второй только ограничивает область действия последующих map, flatMap, foreach, и withFilter операций.

Примечание: результаты могут различаться при разных запусках, если тип базового множества не упорядочен.

Параметры значения
p

предикат для проверки элементов.

Возвращаемое значение

объект класса WithFilter, который поддерживает map, flatMap, foreach, и withFilter операции. Все эти операции применяются к тем элементам этого итерируемого множества, которые удовлетворяют предикату p.

Унаследовано от IterableOps

Источник
def zip[B](that: IterableOnce[B]): View[(A, B)]

Возвращает итерируемое множество, образованное из этого итерируемого множества и другого итерируемого множества, объединяющее соответствующие элементы в пары. Если одно из двух множеств длиннее другого, оставшиеся элементы игнорируются.

Параметры типа
B

тип второй половины возвращаемых пар

Параметры значения
that

Итерируемое множество, предоставляющее вторую половину каждой результирующей пары

Возвращаемое значение

новое итерируемое множество, содержащее пары, состоящие из соответствующих элементов этого итерируемого множества и that. Длина возвращаемого множества равна минимальной из длин этого итерируемого множества и that.

Унаследовано от IterableOps

Источник
def zipAll[A1 >: A, B](that: Iterable[B], thisElem: A1, thatElem: B): View[(A1, B)]

Возвращает итерируемое множество, образованное из этого итерируемого множества и другого итерируемого множества, объединяющее соответствующие элементы в пары. Если одно из двух множеств короче другого, для расширения короче множества до длины более длинного используются элементы-заполнители.

Параметры значения
that

итерируемое множество, предоставляющее вторую половину каждой результирующей пары

thatElem

элемент, используемый для заполнения результата, если that короче этого итерируемого множества.

thisElem

элемент, используемый для заполнения результата, если это итерируемое множество короче that.

Возвращаемое значение

новое множество типа That, содержащее пары, образованные из соответствующих элементов этого итерируемого множества и that. Длина возвращаемого множества равна максимальной из длин этого итерируемого множества и that. Если это итерируемое множество короче that, используются значения thisElem для дополнения результата. Если that короче этого итерируемого множества, значения thatElem используются для дополнения результата.

Унаследовано от IterableOps

Источник
def zipWithIndex: View[(A, Int)]

Унаследовано от IterableOps

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/collection/View$$DistinctBy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API