Трейт scala.collection.parallel.immutable.ParIterable
Компаньон объект ParIterable
trait ParIterable[+T] extends GenIterable[T] with parallel.ParIterable[T] with GenericParTemplate[T, ParIterable] with ParIterableLike[T, ParIterable[T], immutable.Iterable[T]] with Immutable
Члены типа
тракт Accessor[R, Tp] extends StrictSplitterCheckTask[R, Tp]
Стандартная задача доступа, которая итерирует элементы коллекции.
- R
тип результата этого метода (
Rдля результата).- Tp
тип представления задачи.
- Атрибуты
- protected
- Определяющие классы
- ParIterableLike
класс Aggregate[S] extends Accessor[S, Aggregate[S]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
тракт BuilderOps[Elem, To] extends AnyRef
- Определяющие классы
- ParIterableLike
класс Collect[S, That] extends Transformer[Combiner[S, That], Collect[S, That]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
абстрактный класс Composite[FR, SR, R, First <: StrictSplitterCheckTask[FR, _], Second <: StrictSplitterCheckTask[SR, _]] extends NonDivisibleTask[R, Composite[FR, SR, R, First, Second]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Copy[U >: T, That] extends Transformer[Combiner[U, That], Copy[U, That]]
- Атрибуты
- protected
- Определяющие классы
- ParIterableLike
класс CopyToArray[U >: T, This >: Repr] extends Accessor[Unit, CopyToArray[U, This]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Count extends Accessor[Int, Count]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс CreateScanTree[U >: T] extends Transformer[ScanTree[U], CreateScanTree[U]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Drop[U >: T, This >: Repr] extends Transformer[Combiner[U, This], Drop[U, This]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс Exists extends Accessor[Boolean, Exists]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс Filter[U >: T, This >: Repr] extends Transformer[Combiner[U, This], Filter[U, This]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс FilterNot[U >: T, This >: Repr] extends Transformer[Combiner[U, This], FilterNot[U, This]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс Find[U >: T] extends Accessor[Option[U], Find[U]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс FlatMap[S, That] extends Transformer[Combiner[S, That], FlatMap[S, That]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс Fold[U >: T] extends Accessor[U, Fold[U]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс Forall extends Accessor[Boolean, Forall]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс Foreach[S] extends Accessor[Unit, Foreach[S]]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
класс FromScanTree[U >: T, That] extends StrictSplitterCheckTask[Combiner[U, That], FromScanTree[U, That]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс GroupBy[K, U >: T] extends Transformer[HashMapCombiner[K, U], GroupBy[K, U]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Map[S, That] extends Transformer[Combiner[S, That], Map[S, That]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Max[U >: T] extends Accessor[Option[U], Max[U]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Min[U >: T] extends Accessor[Option[U], Min[U]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
тракт NonDivisible[R] extends NonDivisibleTask[R, NonDivisible[R]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
тракт NonDivisibleTask[R, Tp] extends StrictSplitterCheckTask[R, Tp]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
абстрактный класс ParComposite[FR, SR, R, First <: StrictSplitterCheckTask[FR, _], Second <: StrictSplitterCheckTask[SR, _]] extends Composite[FR, SR, R, First, Second]
Выполняет две задачи параллельно и ожидает завершения обеих.
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Partition[U >: T, This >: Repr] extends Transformer[(Combiner[U, This], Combiner[U, This]), Partition[U, This]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
класс Product[U >: T] extends Accessor[U, Product[U]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
класс Reduce[U >: T] extends Accessor[Option[U], Reduce[U]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
абстрактный класс ResultMapping[R, Tp, R1] extends NonDivisibleTask[R1, ResultMapping[R, Tp, R1]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
случайный класс ScanLeaf[U >: T](pit: IterableSplitter[U], op: (U, U) ⇒ U, from: Int, len: Int, prev: Option[ScanLeaf[U]], acc: U) extends ScanTree[U] with scala.Product with Serializable
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
случайный класс ScanNode[U >: T](left: ScanTree[U], right: ScanTree[U]) extends ScanTree[U] with scala.Product with Serializable
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
трайт ScanTree[U >: T] extends AnyRef
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
абстрактный класс SeqComposite[FR, SR, R, First <: StrictSplitterCheckTask[FR, _], Second <: StrictSplitterCheckTask[SR, _]] extends Composite[FR, SR, R, First, Second]
Последовательно выполняет одну задачу за другой.
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
тракт SignallingOps[PI <: DelegatedSignalling] extends AnyRef
- Определяющие классы
- ParIterableLike
класс Slice[U >: T, This >: Repr] extends Transformer[Combiner[U, This], Slice[U, This]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Span[U >: T, This >: Repr] extends Transformer[(Combiner[U, This], Combiner[U, This]), Span[U, This]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс SplitAt[U >: T, This >: Repr] extends Transformer[(Combiner[U, This], Combiner[U, This]), SplitAt[U, This]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
тракт StrictSplitterCheckTask[R, Tp] extends Task[R, Tp]
- Атрибуты
- protected
- Определяющие классы
- ParIterableLike
класс Sum[U >: T] extends Accessor[U, Sum[U]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс Take[U >: T, This >: Repr] extends Transformer[Combiner[U, This], Take[U, This]]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
класс TakeWhile[U >: T, This >: Repr] extends Transformer[(Combiner[U, This], Boolean), TakeWhile[U, This]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
тракт TaskOps[R, Tp] extends AnyRef
- Классы определений
- ParIterableLike
класс ToParCollection[U >: T, That] extends Transformer[Combiner[U, That], ToParCollection[U, That]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
класс ToParMap[K, V, That] extends Transformer[Combiner[(K, V), That], ToParMap[K, V, That]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
тракт Transformer[R, Tp] extends Accessor[R, Tp]
- Атрибуты
- protected
- Классы определений
- ParIterableLike
класс Zip[U >: T, S, That] extends Transformer[Combiner[(U, S), That], Zip[U, S, That]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
класс ZipAll[U >: T, S, That] extends Transformer[Combiner[(U, S), That], ZipAll[U, S, That]]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
тип SSCTask[R, Tp] = StrictSplitterCheckTask[R, Tp]
- Классы определений
- ParIterableLike
Абстрактные члены-значения
abstract def seq: immutable.Iterable[T]
- Определяющие классы
- ParIterableLike → Parallelizable → GenTraversableOnce
abstract def size: Int
Размер этого общего набора.
Примечание: не завершится для коллекций бесконечного размера.
- возвращает
количество элементов в этом общем наборе.
- Определяющие классы
- GenTraversableLike → GenTraversableOnce
abstract def splitter: IterableSplitter[T]
Создаёт новый параллельный итератор, используемый для обхода элементов этой параллельной коллекции. Этот итератор более специфичен, чем итератор, возвращаемый iterator, и дополнен дополнительными методами доступа и преобразования.
- возвращает
параллельный итератор
- Атрибуты
- protected[parallel]
- Определяющие классы
- ParIterableLike
Члены-значения конкретных типов
final def !=(arg0: Any): Boolean
Проверка двух объектов на неравенство.
- returns
trueесли !(this == that), в противном случае false.
- Definition Classes
- AnyRef → Any
final def ##(): Int
Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращается хэш-значение, согласованное с равенством значений: если две экземпляра типа значения сравниваются как true, то ## вернёт одно и то же хэш-значение для каждого из них. Для null возвращается хэш-код, где null.hashCode выбросит NullPointerException.
- returns
хэш-значение, согласованное с ==
- Definition Classes
- AnyRef → Any
def +(other: String): String
- Неявный
- Этот член добавлен неявным преобразованием из ParIterable[T] в any2stringadd[ParIterable[T]], выполненное методом any2stringadd в scala.Predef.
- Definition Classes
- any2stringadd
def ++[U >: T, That](that: GenTraversableOnce[U])(implicit bf: CanBuildFrom[ParIterable[T], U, That]): That
Возвращает новую параллельную итерацию, содержащую элементы из левого операнда, за которыми следуют элементы из правого операнда. Тип элементов параллельной итерации — это наиболее конкретный суперкласс, охватывающий типы элементов двух операндов.
- That
класс возвращаемой коллекции. Там, где это возможно,
Thatтот же класс, что и текущий класс коллекцииRepr, но это зависит от типа элементаBбыть допустимым для этого класса, что означает, что найден неявный экземпляр типаCanBuildFrom[Repr, B, That].- that
итерируемый объект для добавления.
- bf
неявное значение класса
CanBuildFrom, которое определяет класс результатаThatиз текущего типа представленияReprи нового типа элементаB.- returns
новая коллекция типа
That, которая содержит все элементы этой параллельной итерации, за которыми следуют все элементыthat.
- Definition Classes
- ParIterableLike → GenTraversableLike
def ->[B](y: B): (ParIterable[T], B)
- Неявный
- Этот член добавлен неявным преобразованием из ParIterable[T] в ArrowAssoc[ParIterable[T]], выполненное методом ArrowAssoc в scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
def /:[S](z: S)(op: (S, T) ⇒ S): S
Применяет бинарный оператор к начальному значению и всем элементам этой параллельной итерации слева направо.
Примечание: /: — это альтернативная запись для foldLeft; z /: xs равно xs foldLeft z.
Примеры:
Обратите внимание, что функция свёртки, используемая для вычисления b, эквивалентна функции, используемой для вычисления c.
scala> val a = List(1,2,3,4) a: List[Int] = List(1, 2, 3, 4) scala> val b = (5 /: a)(_+_) b: Int = 15 scala> val c = (5 /: a)((x,y) => x + y) c: Int = 15
Примечание: не завершит работу для бесконечных коллекций.
Примечание: может возвращать разные результаты для разных запусков, если только тип базовой коллекции не упорядочен или оператор не является ассоциативным и коммутативным.
- z
начальное значение.
- op
бинарный оператор.
- returns
-
результат вставки
opмежду последовательными элементами этой параллельной итерации слева направо с начальным значениемzслева:op(...op(op(z, x_1), x_2), ..., x_n)
где
x1, ..., xn— элементы этой параллельной итерации.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def :\[S](z: S)(op: (T, S) ⇒ S): S
Применяет бинарный оператор ко всем элементам этого параллельного итерируемого объекта и начальному значению, двигаясь справа налево.
Примечание: :\ — это альтернативная синтаксическая конструкция для foldRight; xs :\ z — то же самое, что и xs foldRight z.
Примечание: не будет завершаться для бесконечных коллекций.
Примечание: может возвращать разные результаты при разных запусках, если только тип базовой коллекции не упорядочен или оператор является ассоциативным и коммутативным.
Примеры:
Обратите внимание, что функция свертки, используемая для вычисления b, эквивалентна функции, используемой для вычисления c.
scala> val a = List(1,2,3,4) a: List[Int] = List(1, 2, 3, 4) scala> val b = (a :\ 5)(_+_) b: Int = 15 scala> val c = (a :\ 5)((x,y) => x + y) c: Int = 15
- z
начальное значение
- op
бинарный оператор
- returns
-
результат вставки
opмежду последовательными элементами этого параллельного итерируемого объекта, двигаясь справа налево с начальным значениемzсправа:op(x_1, op(x_2, ... op(x_n, z)...))
где
x1, ..., xn— это элементы этого параллельного итерируемого объекта.
- Классы определений
- ParIterableLike → GenTraversableOnce
final def ==(arg0: Any): Boolean
Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).
- returns
true, если объект-получатель эквивалентен аргументу;falseв противном случае.
- Классы определений
- AnyRef → Any
def aggregate[S](z: ⇒ S)(seqop: (S, T) ⇒ S, combop: (S, S) ⇒ S): S
Агрегирует результаты применения оператора к последующим элементам.
Это более общая форма fold и reduce. Она имеет аналогичную семантику, но не требует, чтобы результат был супертипом типа элемента. Она последовательно проходит по элементам в разных разделах, используя seqop для обновления результата, а затем применяет combop к результатам из разных разделов. Реализация этой операции может работать с произвольным количеством разделов коллекции, поэтому combop может вызываться произвольное количество раз.
Например, можно обработать некоторые элементы и затем произвести Set. В этом случае, seqop будет обрабатывать элемент и добавлять его в набор, а combop будет конкатенировать два набора из разных разделов вместе. Начальное значение z будет пустым набором.
pc.aggregate(Set[Int]())(_ += process(_), _ ++ _)
Другой пример — вычисление геометрического среднего из коллекции чисел с плавающей запятой (в этом случае обычно требуется использование больших чисел с плавающей запятой).
- S
тип накопленных результатов
- z
начальное значение для накопленного результата раздела — обычно это будет нейтральный элемент для оператора
seqop(например,Nilдля конкатенации списков или0для суммирования), и может быть вычислено более одного раза- seqop
оператор, используемый для накопления результатов в рамках раздела
- combop
ассоциативный оператор, используемый для объединения результатов из разных разделов
- Классы определений
- ParIterableLike → GenTraversableOnce
final def asInstanceOf[T0]: T0
Приводит объект-получатель к типу T0.
Обратите внимание, что успех приведения типа во время выполнения зависит от семантики стирания Scala. Таким образом, выражение 1.asInstanceOf[String] выбросит исключение ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] этого не сделает. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, соответствуют ли содержимое списка требуемому типу.
- returns
объект-получатель.
- Классы определений
- Any
- Исключения
ClassCastException, если объект-получатель не является экземпляром стираемого типаT0.
def bf2seq[S, That](bf: CanBuildFrom[ParIterable[T], S, That]): CanBuildFrom[immutable.Iterable[T], S, That]
- Атрибуты
- protected[this]
- Классы определений
- ParIterableLike
implicit def builder2ops[Elem, To](cb: Builder[Elem, To]): BuilderOps[Elem, To]
- Атрибуты
- protected
- Классы определений
- ParIterableLike
def canEqual(other: Any): Boolean
- Классы определений
- ParIterableLike
def clone(): AnyRef
Создайте копию объекта получателя.
Реализация метода clone по умолчанию зависит от платформы.
- returns
копия объекта получателя.
def collect[B](pf: PartialFunction[A, B]): ParIterable[B]
Создает новую коллекцию, применяя частичную функцию ко всем элементам этого параллельного итерируемого объекта, для которых функция определена.
- B
тип элемента возвращаемой коллекции.
- pf
частичная функция, которая фильтрует и отображает параллельный итерируемый объект.
- returns
новая параллельная итерируемая коллекция, полученная в результате применения заданной частичной функции
pfк каждому элементу, для которого она определена, и сбора результатов. Порядок элементов сохраняется.
- Определяющие классы
- ParIterableLike → GenTraversableLike
def combinerFactory[S, That](cbf: () ⇒ Combiner[S, That]): CombinerFactory[S, That]
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
def combinerFactory: CombinerFactory[T, ParIterable[T]]
Создает фабрику комбинирователей. Каждый экземпляр фабрики комбинирователей используется один раз за вызов метода параллельного преобразования для одной коллекции.
По умолчанию фабрика комбинирователей создает новый комбинирователь каждый раз, когда она запрашивается, если только комбинирователь не является потокобезопасным, как указано его методом canBeShared. В этом случае метод возвращает фабрику, которая каждый раз возвращает один и тот же комбинирователь. Это обычно делается для параллельных коллекций с конкурентным доступом, комбинирователи которых позволяют безопасный доступ из нескольких потоков.
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
def companion: GenericCompanion[ParIterable] with GenericParCompanion[ParIterable]
Фабрика-компаньон, создающая экземпляры класса ParIterable. (или его Iterable суперкласса, если класс ParIterable не является Seq.)
- Определяющие классы
- ParIterable → ParIterable → GenericParTemplate → GenIterable → GenTraversable → GenericTraversableTemplate
def copyToArray(xs: Array[A], start: Int, len: Int): Unit
Копирует элементы этого параллельного итерируемого объекта в массив. Заполняет данный массив xs не более чем len элементами этого параллельного итерируемого объекта, начиная с позиции start. Копирование прекращается, как только достигается конец текущего параллельного итерируемого объекта, или конец целевого массива, или len элементов были скопированы.
Примечание: не будет завершаться для коллекций бесконечного размера.
- xs
массив для заполнения.
- start
индекс начала.
- len
максимальное количество копируемых элементов.
- Определяющие классы
- ParIterableLike → GenTraversableOnce
def copyToArray(xs: Array[A], start: Int): Unit
Копирует элементы этого параллельного итерируемого объекта в массив. Заполняет данный массив xs значениями этого параллельного итерируемого объекта, начиная с индекса start. Копирование прекращается, как только достигается конец текущего параллельного итерируемого объекта или конец целевого массива.
Примечание: не будет завершаться для коллекций бесконечного размера.
- xs
массив для заполнения.
- start
индекс начала.
- Определяющие классы
- ParIterableLike → GenTraversableOnce
def copyToArray(xs: Array[A]): Unit
Копирует элементы этого параллельного итерируемого объекта в массив. Заполняет заданный массив xs значениями этого параллельного итерируемого объекта. Копирование остановится, как только будет достигнут конец текущего параллельного итерируемого объекта или конец целевого массива.
Примечание: не будет завершаться для коллекций бесконечного размера.
- xs
массив для заполнения.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def count(p: (T) ⇒ Boolean): Int
Подсчитывает количество элементов в параллельном итерируемом объекте, удовлетворяющих предикату.
- p
предикат, используемый для проверки элементов.
- returns
количество элементов, удовлетворяющих предикату
p.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def debugBuffer: ArrayBuffer[String]
- Definition Classes
- ParIterableLike
implicit def delegatedSignalling2ops[PI <: DelegatedSignalling](it: PI): SignallingOps[PI]
- Attributes
- protected
- Definition Classes
- ParIterableLike
def drop(n: Int): ParIterable[T]
Выбирает все элементы, кроме первых n.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- n
количество элементов, которые нужно удалить из этого параллельного итерируемого объекта.
- returns
параллельный итерируемый объект, состоящий из всех элементов этого параллельного итерируемого объекта, кроме первых
nэлементов, или пустой параллельный итерируемый объект, если этот параллельный итерируемый объект содержит меньшеnэлементов. Еслиnотрицательное, то элементы не удаляются.
- Definition Classes
- ParIterableLike → GenTraversableLike
def dropWhile(pred: (T) ⇒ Boolean): ParIterable[T]
Удаляет все элементы в самом длинном префиксе элементов, удовлетворяющих предикату, и возвращает коллекцию, составленную из оставшихся элементов.
Этот метод будет использовать indexFlag возможности сигнализации. Это означает, что разделы могут устанавливать и считывать indexFlag состояние. Флаг индекса изначально установлен на максимальное целое число.
- pred
предикат, используемый для проверки элементов
- returns
коллекция, составленная из всех элементов после самого длинного префикса элементов в этом параллельном итерируемом объекте, удовлетворяющих предикату
pred
- Definition Classes
- ParIterableLike → GenTraversableLike
def ensuring(cond: (ParIterable[T]) ⇒ Boolean, msg: ⇒ Any): ParIterable[T]
- Implicit
- Этот член добавлен неявным преобразованием из ParIterable[T] в Ensuring[ParIterable[T]] при помощи метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: (ParIterable[T]) ⇒ Boolean): ParIterable[T]
- Implicit
- Этот член добавлен неявным преобразованием из ParIterable[T] в Ensuring[ParIterable[T]] при помощи метода Ensuring в scala.Predef.
- Definition Classes
- Ensuring
def ensuring(cond: Boolean, msg: ⇒ Any): ParIterable[T]
- Неявный
- Этот член добавлен неявным преобразованием из ParIterable[T] в Ensuring[ParIterable[T]] с помощью метода Ensuring в scala.Predef.
- Классы определений
- Ensuring
def ensuring(cond: Boolean): ParIterable[T]
- Неявный
- Этот член добавлен неявным преобразованием из ParIterable[T] в Ensuring[ParIterable[T]] с помощью метода Ensuring в scala.Predef.
- Классы определений
- Ensuring
final def eq(arg0: AnyRef): Boolean
Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).
Метод eq реализует отношение эквивалентности на непустых экземплярах AnyRef, и обладает тремя дополнительными свойствами:
-
Он является согласованным: для любых непустых экземпляров
x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false.Для любого непустого экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false.
null.eq(null) возвращает true. При переопределении методов equals или hashCode важно обеспечить, чтобы их поведение соответствовало равенству ссылок. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).
- возвращает
trueесли аргумент является ссылкой на объект-получатель;falseв противном случае.
- Классы определений
- AnyRef
def equals(arg0: Any): Boolean
Метод равенства для ссылочных типов. По умолчанию делегирует вызов eq.
См. также equals в scala.Any.
- возвращает
trueесли объект-получатель эквивалентен аргументу;falseв противном случае.
- Классы определений
- AnyRef → Any
def exists(p: (T) ⇒ Boolean): Boolean
Проверяет, выполняется ли предикат для некоторого элемента этого параллельного итерируемого объекта.
Этот метод будет использовать возможности abort сигнализации. Это означает, что разделы могут отправлять и читать сигналы abort.
- p
предикат, используемый для проверки элементов
- возвращает
true, если
pвыполняется для некоторого элемента, иначе false
- Классы определений
- ParIterableLike → GenTraversableOnce
def filter(pred: (T) ⇒ Boolean): ParIterable[T]
Выбирает все элементы этого параллельного итерируемого объекта, которые удовлетворяют предикату.
- pred
предикат, используемый для проверки элементов.
- возвращает
новый параллельный итерируемый объект, состоящий из всех элементов этого параллельного итерируемого объекта, которые удовлетворяют заданному предикату
p. Их порядок может не сохраняться.
- Классы определений
- ParIterableLike → GenTraversableLike
def filterNot(pred: (T) ⇒ Boolean): ParIterable[T]
Выбирает все элементы этого параллельного итерируемого объекта, которые не удовлетворяют предикату.
- pred
предикат, используемый для проверки элементов.
- возвращает
новый параллельный итерируемый объект, состоящий из всех элементов этого параллельного итерируемого объекта, которые не удовлетворяют заданному предикату
p. Их порядок может не сохраняться.
- Классы определений
- ParIterableLike → GenTraversableLike
def finalize(): Unit
Вызывается сборщиком мусора на объекте-получателе, когда больше нет ссылок на объект.
Подробности о том, когда и если вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.
- Атрибуты
- protected[lang]
- Классы определений
- AnyRef
- Аннотации
- @throws( classOf[java.lang.Throwable] )
- Примечание
не указано в SLS в качестве члена AnyRef
def find(p: (T) ⇒ Boolean): Option[T]
Находит элемент в коллекции, для которого выполняется предикат, если такой элемент существует. Элемент необязательно должен быть первым в порядке итерации.
Если существует несколько элементов, удовлетворяющих предикату, выбор не детерминирован.
Этот метод будет использовать abort возможности сигнализации. Это означает, что разделители могут отправлять и читать abort сигналы.
- p
предикат, используемый для проверки элементов
- returns
значение Option с элементом, если такой элемент существует, или
Noneв противном случае
- Definition Classes
- ParIterableLike → GenTraversableOnce
def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): ParIterable[B]
Строит новую коллекцию, применяя функцию ко всем элементам этой параллельной итерации и используя элементы полученных коллекций.
Например:
def getWords(lines: Seq[String]): Seq[String] = lines flatMap (line => line split "\\W+")
Тип результирующей коллекции определяется статическим типом параллельной итерации. Это иногда может приводить к неожиданным результатам. Например:
// lettersOf will return a Seq[Char] of likely repeated letters, instead of a Set
def lettersOf(words: Seq[String]) = words flatMap (word => word.toSet)
// lettersOf will return a Set[Char], not a Seq
def lettersOf(words: Seq[String]) = words.toSet flatMap (word => word.toSeq)
// xs will be an Iterable[Int]
val xs = Map("a" -> List(11,111), "b" -> List(22,222)).flatMap(_._2)
// ys will be a Map[Int, Int]
val ys = Map("a" -> List(1 -> 11,1 -> 111), "b" -> List(2 -> 22,2 -> 222)).flatMap(_._2)
- B
тип элементов возвращаемой коллекции.
- f
функция, которая применяется к каждому элементу.
- returns
новая параллельная итерируемая коллекция, полученная путем применения заданной функции, принимающей коллекцию
fк каждому элементу этой параллельной итерации и конкатенации результатов.
- Definition Classes
- ParIterableLike → GenTraversableLike
def flatten[B]: ParIterable[B]
Преобразует эту параллельную итерируемую коллекцию из коллекций Traversable в параллельную итерируемую коллекцию, образованную элементами этих коллекций Traversable.
Тип результирующей коллекции будет определяться статическим типом параллельной итерируемой коллекции. Например:
val xs = List(
Set(1, 2, 3),
Set(1, 2, 3)
).flatten
// xs == List(1, 2, 3, 1, 2, 3)
val ys = Set(
List(1, 2, 3),
List(3, 2, 1)
).flatten
// ys == Set(1, 2, 3)
- B
тип элементов каждой коллекции Traversable.
- returns
новая параллельная итерируемая коллекция, полученная путем конкатенации всех параллельных итерируемых элементов.
- Definition Classes
- GenericTraversableTemplate
def fold[U >: T](z: U)(op: (U, U) ⇒ U): U
Складывает элементы этого последовательного объекта, используя указанный ассоциативный бинарный оператор. Порядок, в котором элементы сводятся, не определён и может быть недетерминированным.
Обратите внимание, что этот метод имеет другую сигнатуру, чем методы foldLeft и foldRight трактата Traversable. Результатом сворачивания может быть только супертип параметра типа этой параллельной коллекции T.
- U
параметр типа для бинарного оператора, супертип
T.- z
нейтральный элемент для операции fold, его можно добавлять к результату произвольное количество раз, не изменяя результат (например,
Nilдля конкатенации списков, 0 для сложения или 1 для умножения)- op
бинарный оператор, который должен быть ассоциативным
- returns
результат применения оператора fold
opмежду всеми элементами иz
- Definition Classes
- ParIterableLike → GenTraversableOnce
def foldLeft[S](z: S)(op: (S, T) ⇒ S): S
Применяет бинарный оператор к начальному значению и всем элементам этой параллельной итерации, слева направо.
Примечание: не завершит работу для коллекций бесконечного размера.
Примечание: может возвращать разные результаты при разных запусках, если тип базовой коллекции не упорядочен или оператор ассоциативен и коммутативен.
- z
начальное значение.
- op
бинарный оператор.
- returns
-
результат вставки
opмежду последовательными элементами этой параллельной итерируемой коллекции, слева направо, с начальным значениемzслева:op(...op(z, x_1), x_2, ..., x_n)
где
x1, ..., xnявляются элементами этой параллельной итерируемой коллекции. Возвращаетz, если эта параллельная итерируемая коллекция пуста.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def foldRight[S](z: S)(op: (T, S) ⇒ S): S
Применяет бинарный оператор ко всем элементам этой параллельной итерируемой коллекции и начальному значению, справа налево.
Примечание: не завершит работу для коллекций бесконечного размера.
Примечание: может возвращать разные результаты при разных запусках, если тип базовой коллекции не упорядочен или оператор ассоциативен и коммутативен.
- z
начальное значение.
- op
бинарный оператор.
- returns
-
результат вставки
opмежду последовательными элементами этой параллельной итерируемой коллекции, справа налево, с начальным значениемzсправа:op(x_1, op(x_2, ... op(x_n, z)...))
где
x1, ..., xnявляются элементами этой параллельной итерируемой коллекции. Возвращаетz, если эта параллельная итерируемая коллекция пуста.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def forall(p: (T) ⇒ Boolean): Boolean
Проверяет, выполняется ли предикат для всех элементов этого параллельного итерируемого объекта.
Этот метод будет использовать возможности abort сигнализации. Это означает, что разделители могут отправлять и читать abort сигналы.
- p
предикат, используемый для проверки элементов
- returns
true, если
pвыполняется для всех элементов, в противном случае false
- Definition Classes
- ParIterableLike → GenTraversableOnce
def foreach[U](f: (T) ⇒ U): Unit
Применяет функцию f ко всем элементам параллельного итерируемого объекта в неопределённом порядке.
- U
тип результата функции, применяемой к каждому элементу, который всегда отбрасывается
- f
функция, применяемая к каждому элементу
- Definition Classes
- ParIterableLike → GenTraversableLike → GenTraversableOnce
def formatted(fmtstr: String): String
Возвращает строку, отформатированную в соответствии с заданной format строкой. Форматные строки аналогичны String.format (@см. java.lang.String.format).
- Implicit
- Этот член добавляется неявным преобразованием из ParIterable[T] в StringFormat[ParIterable[T]] с помощью метода StringFormat в scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
def genericBuilder[B]: Combiner[B, ParIterable[B]]
Общий билдер, который строит экземпляры Traversable для произвольных типов элементов.
- Definition Classes
- GenericParTemplate → GenericTraversableTemplate
def genericCombiner[B]: Combiner[B, ParIterable[B]]
- Definition Classes
- GenericParTemplate
final def getClass(): Class[_]
Возвращает представление класса объекта во время выполнения.
- returns
объект класса, соответствующий типу получателя во время выполнения.
def groupBy[K](f: (T) ⇒ K): ParMap[K, ParIterable[T]]
Разбивает этот параллельный итерируемый объект на карту параллельных итерируемых объектов в соответствии с некоторой функцией-дискриминатором.
Примечание: этот метод не переопределяется представлениями. Это означает, что при применении к представлению он всегда принудительно преобразует представление и возвращает новый параллельный итерируемый объект.
- K
тип ключей, возвращаемых функцией-дискриминатором.
- f
функция-дискриминатор.
- returns
-
Карта из ключей в параллельные итерируемые объекты, удовлетворяющая следующему инварианту:
(xs groupBy f)(k) = xs filter (x => f(x) == k)
То есть каждый ключ
kсопоставлен с параллельным итерируемым объектом тех элементовx, для которыхf(x)равноk.
- Definition Classes
- ParIterableLike → GenTraversableLike
def hasDefiniteSize: Boolean
Проверяет, известен ли размер этого параллельного итерируемого объекта как конечный. Все строгие коллекции известны как имеющие конечный размер. Для нестрогой коллекции, такой как Stream, предикат возвращает true, если все элементы были вычислены. Он возвращает false, если поток ещё не был проанализирован до конца. Непустые итераторы обычно возвращают false даже если они были созданы из коллекции с известным конечным размером.
Примечание: многие методы коллекции не будут работать с коллекциями бесконечных размеров. Типичная ошибка — бесконечный цикл. Эти методы всегда пытаются выполнить обход, не проверяя предварительно, что hasDefiniteSize возвращает true. Однако проверка hasDefiniteSize может гарантировать, что размер определён и бесконечная итерация не является проблемой.
- returns
trueесли эта коллекция известна как конечного размера,falseв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def hashCode(): Int
def head: T
Выбирает первый элемент этого параллельного итерируемого объекта.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- returns
первый элемент этого параллельного итерируемого объекта.
- Definition Classes
- ParIterableLike → GenTraversableLike
- Exceptions thrown
NoSuchElementException, если параллельный итерируемый объект пуст.
def headOption: Option[T]
Возвращает первый элемент, если он есть.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- returns
первый элемент этого параллельного итерируемого объекта, если он не пуст,
Noneв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableLike
def init: ParIterable[T]
Выбирает все элементы, кроме последнего.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- returns
параллельный итерируемый объект, содержащий все элементы этого параллельного итерируемого объекта, кроме последнего.
- Definition Classes
- ParIterableLike → GenTraversableLike
- Exceptions thrown
UnsupportedOperationExceptionесли параллельный итерируемый объект пуст.
def initTaskSupport(): Unit
- Attributes
- protected
- Definition Classes
- ParIterableLike
def isEmpty: Boolean
Проверяет, пуст ли параллельный итерируемый объект.
Примечание: Реализации в подклассах, которые не являются многократно итерируемыми, должны позаботиться о том, чтобы не потреблять элементы, когда isEmpty вызывается.
- returns
trueесли параллельный итерируемый объект не содержит элементов,falseв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableOnce
final def isInstanceOf[T0]: Boolean
Проверяет, является ли динамический тип объекта-получателя T0.
Обратите внимание, что результат проверки зависит от стирания типов в Scala. Следовательно, выражение 1.isInstanceOf[String] вернет false, а выражение List(1).isInstanceOf[List[String]] вернет true. В последнем примере, потому что аргумент типа стирается во время компиляции, невозможно проверить, содержатся ли элементы списка указанного типа.
- returns
trueесли объект-получатель является экземпляром стиранного типаT0;falseв противном случае.
- Definition Classes
- Any
def isStrictSplitterCollection: Boolean
Указывает, имеет ли эта параллельная коллекция строгие разделители.
Это справедливо в общем случае, и конкретные экземпляры коллекций могут переопределять этот метод. Такие коллекции не смогут выполнить методы, которые полагаются на то, что разделители являются строгими, т. е. возвращают правильное значение в методе remaining.
Этот метод помогает гарантировать, что такие ошибки возникают при вызове методов, а не позже и непредсказуемым образом.
- Definition Classes
- ParIterableLike
final def isTraversableAgain: Boolean
Проверяет, может ли этот параллельный итерируемый объект быть повторно пройден.
- returns
true
- Definition Classes
- ParIterableLike → GenTraversableLike → GenTraversableOnce
def iterator: Splitter[T]
Создает новый итератор разбиения, используемый для обхода элементов этой коллекции.
По умолчанию этот метод реализован с использованием защищенного метода splitter.
- returns
итератор разбиения
- Definition Classes
- ParIterableLike → GenIterableLike
def last: T
Выбирает последний элемент.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- returns
Последний элемент этого параллельного итерируемого объекта.
- Definition Classes
- ParIterableLike → GenTraversableLike
- Exceptions thrown
NoSuchElementExceptionЕсли параллельный итерируемый объект пуст.
def lastOption: Option[T]
Возвращает последний элемент, если он есть.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- returns
последний элемент этого параллельного итерируемого объекта, если он не пуст,
Noneв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableLike
def map[B](f: (A) ⇒ B): ParIterable[B]
Создаёт новую коллекцию, применяя функцию ко всем элементам этого параллельного итерируемого объекта.
- B
тип элементов возвращаемой коллекции.
- f
функция, применяемая к каждому элементу.
- returns
новый параллельный итерируемый объект, полученный путём применения заданной функции
fк каждому элементу этого параллельного итерируемого объекта и сбора результатов.
- Definition Classes
- ParIterableLike → GenTraversableLike
def max: A
Находит наибольший элемент.
- returns
наибольший элемент этого параллельного итерируемого объекта.
- Definition Classes
- ParIterableLike → GenTraversableOnce
- Exceptions thrown
UnsupportedOperationExceptionесли этот параллельный итерируемый объект пуст.
def maxBy[B](f: (A) ⇒ B): A
Находит первый элемент, который даёт наибольшее значение, измеренное функцией f.
- B
Тип результата функции f.
- f
Функция измерения.
- returns
первый элемент этого параллельного итерируемого объекта с наибольшим значением, измеренным функцией f.
- Definition Classes
- ParIterableLike → GenTraversableOnce
- Exceptions thrown
UnsupportedOperationExceptionесли этот параллельный итерируемый объект пуст.
def min: A
Находит наименьший элемент.
- returns
наименьший элемент этого параллельного итерируемого объекта
- Definition Classes
- ParIterableLike → GenTraversableOnce
- Exceptions thrown
UnsupportedOperationExceptionесли этот параллельный итерируемый объект пуст.
def minBy[B](f: (A) ⇒ B): A
Находит первый элемент, который даёт наименьшее значение, измеренное функцией f.
- B
Тип результата функции f.
- f
Функция измерения.
- returns
первый элемент этого параллельного итерируемого объекта с наименьшим значением, измеренным функцией f.
- Definition Classes
- ParIterableLike → GenTraversableOnce
- Exceptions thrown
UnsupportedOperationExceptionесли этот параллельный итерируемый объект пуст.
def mkString: String
Отображает все элементы этого параллельного итерируемого объекта в строке.
- returns
строковое представление этого параллельного итерируемого объекта. В результирующей строке строковые представления (с учётом метода
toString) всех элементов этого параллельного итерируемого объекта следуют друг за другом без каких-либо разделителей строк.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def mkString(sep: String): String
Отображает все элементы этого параллельного итерируемого объекта в строке с использованием разделительной строки.
- sep
разделительная строка.
- returns
строковое представление этого параллельного итерируемого объекта. В результирующей строке строковые представления (с учётом метода
toString) всех элементов этого параллельного итерируемого объекта разделены строкойsep.
- Definition Classes
- ParIterableLike → GenTraversableOnce
List(1, 2, 3).mkString("|") = "1|2|3"
def mkString(start: String, sep: String, end: String): String
Отображает все элементы этого параллельного итерируемого объекта в строке с использованием начальной, конечной и разделительной строк.
- start
начальная строка.
- sep
разделительная строка.
- end
конечная строка.
- returns
строковое представление этого параллельного итерируемого объекта. Результирующая строка начинается со строки
startи заканчивается строкойend. Внутри строковые представления (с учётом методаtoString) всех элементов этого параллельного итерируемого объекта разделены строкойsep.
- Definition Classes
- ParIterableLike → GenTraversableOnce
List(1, 2, 3).mkString("(", "; ", ")") = "(1; 2; 3)"
final def ne(arg0: AnyRef): Boolean
Эквивалентно !(this eq that).
- returns
trueесли аргумент не является ссылкой на объект-получатель;falseв противном случае.
- Definition Classes
- AnyRef
def newBuilder: Builder[T, ParIterable[T]]
Построитель, создающий экземпляры типа Traversable[A]
- Attributes
- protected[this]
- Definition Classes
- GenericParTemplate → GenericTraversableTemplate → HasNewBuilder
def newCombiner: Combiner[T, ParIterable[T]]
- Attributes
- protected[this]
- Definition Classes
- GenericParTemplate → HasNewCombiner
def nonEmpty: Boolean
Проверяет, не является ли параллельное множество пустым.
- returns
trueесли параллельное множество содержит хотя бы один элемент,falseв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableOnce
final def notify(): Unit
Разбуживает один поток, ожидающий монитора объекта-получателя.
- Definition Classes
- AnyRef
- Annotations
- @native()
- Note
не определено в SLS как член AnyRef
final def notifyAll(): Unit
Разбуживает все потоки, ожидающие монитора объекта-получателя.
- Definition Classes
- AnyRef
- Annotations
- @native()
- Note
не определено в SLS как член AnyRef
def par: ParIterable[T]
Возвращает параллельную реализацию этого набора.
Для большинства типов коллекций этот метод создает новую параллельную коллекцию, копируя все элементы. Для таких коллекций par занимает линейное время. Изменяемые коллекции в этой категории не производят изменяемую параллельную коллекцию, которая имеет тот же базовый набор данных, поэтому изменения в одной коллекции не будут отражены в другой.
У определенных коллекций (например, ParArray или mutable.ParHashMap) переопределяется это поведение по умолчанию путем создания параллельной коллекции, которая использует те же базовые данные. Для таких коллекций par занимает постоянное или подлинейное время.
Все параллельные коллекции возвращают ссылку на себя.
- returns
параллельную реализацию этого набора
- Definition Classes
- ParIterableLike → CustomParallelizable → Parallelizable
def parCombiner: Combiner[T, ParIterable[T]]
Реализация par по умолчанию использует комбинирователь, предоставленный этим методом, для создания новой параллельной коллекции.
- returns
комбинирователь для параллельной коллекции типа
ParRepr
- Attributes
- protected[this]
- Definition Classes
- CustomParallelizable → Parallelizable
def partition(pred: (T) ⇒ Boolean): (ParIterable[T], ParIterable[T])
Разделяет это параллельное множество на две параллельные коллекции в соответствии с предикатом.
- pred
предикат, по которому происходит разделение.
- returns
пара пар параллельных множеств: первое параллельное множество содержит все элементы, которые удовлетворяют предикату
p, а второе — все элементы, которые не удовлетворяют. Относительный порядок элементов в получившихся параллельных множествах может не сохраняться.
- Definition Classes
- ParIterableLike → GenTraversableLike
def product: A
Умножает элементы этого набора.
- returns
произведение всех элементов в этом параллельном множестве чисел типа
Int. ВместоInt, можно использовать любой другой типTс неявной реализациейNumeric[T]как типа элементов параллельного множества и типа результатаproduct. Примерами таких типов являются:Long,Float,Double,BigInt.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def reduce[U >: T](op: (U, U) ⇒ U): U
Сводит элементы этого последовательного массива с помощью указанного ассоциативного бинарного оператора.
Порядок выполнения операций над элементами не определён и может быть не детерминированным.
Обратите внимание, что у этого метода другой синтаксис, чем у методов reduceLeft и reduceRight трейта Traversable. Результатом сводки может быть только супертип параметра типа этого параллельного набора T.
- U
Параметр типа для бинарного оператора, являющийся супертипом
T.- op
Бинарный оператор, который должен быть ассоциативным.
- returns
Результат применения оператора сводки
opмежду всеми элементами, если коллекция не пуста.
- Definition Classes
- ParIterableLike → GenTraversableOnce
- Exceptions thrown
UnsupportedOperationException, если этот параллельный итерируемый объект пуст.
def reduceLeft[U >: T](op: (U, T) ⇒ U): U
- Definition Classes
- ParIterableLike
def reduceLeftOption[U >: T](op: (U, T) ⇒ U): Option[U]
Применяет бинарный оператор ко всем элементам этого параллельного итерируемого объекта слева направо.
Примечание: не будет завершаться для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен. или оператор ассоциативен и коммутативен.
- op
бинарный оператор.
- returns
значение Option, содержащее результат
reduceLeft(op), если этот параллельный итерируемый объект не пустой,Noneв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def reduceOption[U >: T](op: (U, U) ⇒ U): Option[U]
Необязательно сводит элементы этой последовательности с использованием указанного ассоциативного бинарного оператора.
Порядок выполнения операций над элементами не определён и может быть не детерминированным.
Обратите внимание, что у этого метода другой синтаксис, чем у методов reduceLeftOption и reduceRightOption трейта Traversable. Результатом сводки может быть только супертип параметра типа этого параллельного набора T.
- U
Параметр типа для бинарного оператора, являющийся супертипом
T.- op
Бинарный оператор, который должен быть ассоциативным.
- returns
Значение Option, содержащее результат применения оператора сводки
opмежду всеми элементами, если коллекция не пустая, иNoneв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def reduceRight[U >: T](op: (T, U) ⇒ U): U
Применяет бинарный оператор ко всем элементам этого параллельного итерируемого объекта справа налево.
Примечание: не будет завершаться для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен. или оператор ассоциативен и коммутативен.
- op
бинарный оператор.
- returns
-
результат вставки
opмежду последовательными элементами этого параллельного итерируемого объекта справа налево:op(x_1, op(x_2, ..., op(x_{n-1}, x_n)...))где
x1, ..., xn— элементы этого параллельного итерируемого объекта.
- Definition Classes
- ParIterableLike → GenTraversableOnce
- Exceptions thrown
UnsupportedOperationException, если этот параллельный итерируемый объект пуст.
def reduceRightOption[U >: T](op: (T, U) ⇒ U): Option[U]
Необязательно применяет бинарный оператор ко всем элементам этого параллельного итерируемого объекта справа налево.
Примечание: не будет завершаться для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен. или оператор ассоциативен и коммутативен.
- op
бинарный оператор.
- returns
значение Option, содержащее результат
reduceRight(op), если этот параллельный итерируемый объект не пустой,Noneв противном случае.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def repr: ParIterable[T]
- Определяющие классы
- ParIterableLike → GenTraversableLike
def reuse[S, That](oldc: Option[Combiner[S, That]], newc: Combiner[S, That]): Combiner[S, That]
При необходимости использует существующий комбинировщик для повышения производительности. По умолчанию он этого не делает — подклассы могут переопределить это поведение. Предоставленный комбинировщик oldc , который потенциально может быть повторно использован, будет либо некоторым комбинировщиком из предыдущей вычислительной задачи, либо None, если предыдущей фазы не было (в этом случае этот метод должен вернуть newc).
- oldc
Комбинировщик, являющийся результатом предыдущей задачи, или
None, если предыдущей задачи не было.- newc
Новый, пустой комбинировщик, который можно использовать.
- возвращает
Либо
newc, либоoldc.
- Атрибуты
- protected
- Определяющие классы
- ParIterableLike
def sameElements(that: GenIterable[A]): Boolean
Проверяет, содержит ли другая итерируемая коллекция те же элементы в том же порядке, что и этот параллельный итерируемый объект.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не является упорядоченным.
Примечание: не будет завершаться для коллекций бесконечного размера.
- that
коллекция для сравнения.
- возвращает
true, если обе коллекции содержат одни и те же элементы в том же порядке,falseв противном случае.
- Определяющие классы
- ParIterableLike → GenIterableLike
def scan(z: T)(op: (T, T) ⇒ T): ParIterable[T]
Вычисляет префиксный сканирование элементов коллекции.
Примечание: нейтральный элемент z может применяться более одного раза.
- z
нейтральный элемент для оператора
op- op
ассоциативный оператор для сканирования
- возвращает
новая параллельная итерируемая коллекция, содержащая префиксное сканирование элементов в этом параллельном итерируемом объекте
- Определяющие классы
- ParIterableLike → GenTraversableLike
def scanBlockSize: Int
- Атрибуты
- protected[this]
- Определяющие классы
- ParIterableLike
def scanLeft[S, That](z: S)(op: (S, T) ⇒ S)(implicit bf: CanBuildFrom[ParIterable[T], S, That]): That
Создаёт коллекцию, содержащую кумулятивные результаты применения оператора слева направо.
Примечание: не будет завершаться для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не является упорядоченным.
- That
фактический тип результирующей коллекции
- z
начальное значение
- op
бинарный оператор, применяемый к промежуточному результату и элементу
- bf
явное значение класса
CanBuildFrom, которое определяет класс результатаThatиз текущего типа представленияReprи нового типа элементовB.- возвращает
коллекция с промежуточными результатами
- Определяющие классы
- ParIterableLike → GenTraversableLike
def scanRight[S, That](z: S)(op: (T, S) ⇒ S)(implicit bf: CanBuildFrom[ParIterable[T], S, That]): That
Создаёт коллекцию, содержащую кумулятивные результаты применения оператора справа налево. В начале коллекции находится последний кумулятивный результат.
Примечание: не завершится для коллекций бесконечного размера.
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
Пример:
List(1, 2, 3, 4).scanRight(0)(_ + _) == List(10, 9, 7, 4, 0)
- That
фактический тип результирующей коллекции
- z
начальное значение
- op
бинарный оператор, применяемый к промежуточному результату и элементу
- bf
неявное значение класса
CanBuildFrom, которое определяет тип результатаThatпо текущему типу представленияReprи новому типу элементаB.- возвращает
коллекция с промежуточными результатами
- Классы-определения
- ParIterableLike → GenTraversableLike
def sequentially[S, That <: Parallel](b: (immutable.Iterable[T]) ⇒ Parallelizable[S, That]): ParIterable[T]
- Атрибуты
- protected[this]
- Классы-определения
- ParIterableLike
def sizeHintIfCheap: Int
Размер этой коллекции или итератора, если он может быть вычислен без больших затрат
- возвращает
количество элементов в этой коллекции или итераторе, или -1, если размер нельзя определить без больших затрат
- Атрибуты
- protected[collection]
- Классы-определения
- GenTraversableOnce
def slice(unc_from: Int, unc_until: Int): ParIterable[T]
Выбирает интервал элементов. Полученная коллекция состоит из всех элементов x, которые удовлетворяют условию:
from <= indexOf(x) < until
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- unc_from
наименьший индекс для включения из этого параллельного итератора.
- unc_until
наименьший индекс для ИСКЛЮЧЕНИЯ из этого параллельного итератора.
- возвращает
параллельный итератор, содержащий элементы, большие или равные индексу
from, и до (но не включая) индексuntilэтого параллельного итератора.
- Классы-определения
- ParIterableLike → GenTraversableLike
def span(pred: (T) ⇒ Boolean): (ParIterable[T], ParIterable[T])
Разделяет этот параллельный итератор на пару префикс/суффикс в соответствии с предикатом.
Этот метод будет использовать indexFlag возможности сигнализации. Это означает, что разделители могут устанавливать и считывать состояние indexFlag. Флаг индекса изначально устанавливается в максимальное целое значение.
- pred
предикат, используемый для проверки элементов
- возвращает
пара, состоящая из самого длинного префикса коллекции, для которого все элементы удовлетворяют
pred, и остальная часть коллекции
- Классы-определения
- ParIterableLike → GenTraversableLike
def splitAt(n: Int): (ParIterable[T], ParIterable[T])
Разделяет этот параллельный итератор на две части по заданной позиции. Примечание: c splitAt n эквивалентно (но, возможно, более эффективно, чем) (c take n, c drop n).
Примечание: может возвращать разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- n
позиция, по которой нужно разделить.
- возвращает
пара параллельных итераторов, состоящая из первых
nэлементов этого параллельного итератора и других элементов.
- Классы-определения
- ParIterableLike → GenTraversableLike
def stringPrefix: String
Определяет префикс представления этого объекта.
- возвращает
строковое представление, которое начинается с результата
toString, применённого к этому параллельному итератору. По умолчанию префикс строки — простое имя класса коллекции параллельного итератора.
- Классы-определения
- ParIterable → GenTraversableLike
def sum: A
Суммирует элементы этой коллекции.
- возвращает
сумма всех элементов в этом параллельном итераторе чисел типа
Int. ВместоInt, может быть использован любой другой типTс неявнымNumeric[T]реализацией, как тип элемента параллельного итератора и как тип результатаsum. Примеры таких типов:Long,Float,Double,BigInt.
- Классы-определения
- ParIterableLike → GenTraversableOnce
final def synchronized[T0](arg0: ⇒ T0): T0
- Определяющие классы
- AnyRef
def tail: ParIterable[T]
Выбирает все элементы, кроме первого.
Примечание: могут быть получены разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- возвращает
параллельное множество, состоящее из всех элементов этого параллельного множества, кроме первого.
- Определяющие классы
- ParIterableLike → GenTraversableLike
- Исключения
UnsupportedOperationException, если параллельное множество пусто.
def take(n: Int): ParIterable[T]
Выбирает первые n элементов.
Примечание: могут быть получены разные результаты для разных запусков, если тип базовой коллекции не упорядочен.
- n
число элементов для извлечения из этого параллельного множества.
- возвращает
параллельное множество, содержащее только первые
nэлементов этого параллельного множества, или всё параллельное множество, если оно содержит меньшеnэлементов. Еслиnотрицательно, возвращает пустое параллельное множество.
- Определяющие классы
- ParIterableLike → GenTraversableLike
def takeWhile(pred: (T) ⇒ Boolean): ParIterable[T]
Извлекает самую длинную префиксную последовательность элементов, удовлетворяющих предикату.
Этот метод будет использовать indexFlag возможности сигнализации. Это означает, что разделители могут устанавливать и считывать indexFlag состояние. Флаг индекса изначально устанавливается в максимальное целочисленное значение.
- pred
предикат, используемый для проверки элементов
- возвращает
самый длинный префикс этого параллельного множества элементов, удовлетворяющих предикату
pred
- Определяющие классы
- ParIterableLike → GenTraversableLike
implicit def task2ops[R, Tp](tsk: SSCTask[R, Tp]): TaskOps[R, Tp]
- Атрибуты
- protected
- Определяющие классы
- ParIterableLike
def tasksupport: TaskSupport
Объект поддержки задач, отвечающий за планирование и распределение задач по процессорам.
- Определяющие классы
- ParIterableLike
- См. также
def tasksupport_=(ts: TaskSupport): Unit
Изменяет объект поддержки задач, который отвечает за планирование и распределение задач по процессорам.
Объект поддержки задач может быть изменен в параллельной коллекции после ее создания, но только в течение спокойного периода, то есть при отсутствии одновременных вызовов методов параллельной коллекции.
Вот способ изменения поддержки задач параллельной коллекции:
import scala.collection.parallel._ val pc = mutable.ParArray(1, 2, 3) pc.tasksupport = new ForkJoinTaskSupport( new java.util.concurrent.ForkJoinPool(2))
- Определяющие классы
- ParIterableLike
- См. также
def to[Col[_]]: Col[A]
Преобразует это параллельное множество в другое, копируя все элементы.
Примечание: не завершится для коллекций бесконечного размера.
- Col
Тип коллекции для создания.
- возвращает
новая коллекция, содержащая все элементы этого параллельного множества.
- Определяющие классы
- ParIterableLike → GenTraversableOnce
def toArray: Array[A]
Преобразует это параллельное множество в массив.
Примечание: не завершится для коллекций бесконечного размера.
- возвращает
массив, содержащий все элементы этого параллельного множества. Должен быть доступен
ClassTagдля типа элементов этого параллельного множества.
- Определяющие классы
- ParIterableLike → GenTraversableOnce
def toBuffer[U >: T]: Buffer[U]
Использует содержимое этого параллельного множества для создания нового изменяемого буфера.
Примечание: не завершится для коллекций бесконечного размера.
- возвращает
буфер, содержащий все элементы этого параллельного множества.
- Определяющие классы
- ParIterableLike → GenTraversableOnce
def toIndexedSeq: immutable.IndexedSeq[T]
Преобразует это параллельное итерируемое множество в индексированную последовательность.
Примечание: не будет завершаться для коллекций бесконечного размера.
- returns
индексированная последовательность, содержащая все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toIterable: ParIterable[T]
Преобразует это параллельное итерируемое множество в итерируемую коллекцию. Обратите внимание, что выбор целевого Iterable является ленивым в этом реализуемом по умолчанию, так как этот TraversableOnce может быть ленивым и неопределённым (то есть это может быть итератор, который можно использовать только один раз).
Примечание: не будет завершаться для коллекций бесконечного размера.
- returns
коллекцию, содержащую все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterable → ParIterableLike → GenTraversableOnce
def toIterator: scala.Iterator[T]
Возвращает итератор по элементам в этом параллельном итерируемом множестве. Вернёт тот же итератор, если этот экземпляр уже является итератором.
Примечание: не будет завершаться для коллекций бесконечного размера.
- returns
итератор, содержащий все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toList: List[T]
Преобразует это параллельное итерируемое множество в список.
Примечание: не будет завершаться для коллекций бесконечного размера.
- returns
список, содержащий все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toMap[T, U]: collection.Map[T, U]
Преобразует это параллельное итерируемое множество в карту. Этот метод недоступен, если элементы не являются членами Tuple2, каждый ((T, U)) становится парой ключ-значение в карте. Дублирующиеся ключи будут перезаписаны последующими ключами: если это неупорядоченная коллекция, то какой ключ находится в результирующей карте не определено.
Примечание: не будет завершаться для коллекций бесконечного размера.
- returns
карта типа
immutable.Map[T, U]содержащая все пары ключ/значение типа(T, U)этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toParArray: ParArray[T]
- Неявный
- Этот член добавлен неявным преобразованием из ParIterable[T] в CollectionsHaveToParArray[ParIterable[T], T] выполненный методом CollectionsHaveToParArray в scala.collection.parallel. Это преобразование произойдёт только если в поле зрения есть неявное значение типа (ParIterable[T]) ⇒ GenTraversableOnce[T].
- Definition Classes
- CollectionsHaveToParArray
def toParCollection[U >: T, That](cbf: () ⇒ Combiner[U, That]): That
- Attributes
- protected
- Definition Classes
- ParIterableLike
def toParMap[K, V, That](cbf: () ⇒ Combiner[(K, V), That])(implicit ev: <:<[T, (K, V)]): That
- Attributes
- protected
- Definition Classes
- ParIterableLike
def toSeq: ParSeq[T]
Преобразует это параллельное итерируемое множество в последовательность. Как и toIterable, в этой реализации по умолчанию оно ленивое, так как это TraversableOnce может быть ленивым и не вычисленным.
Примечание: не завершится для коллекций бесконечного размера.
- returns
последовательность, содержащая все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterable → ParIterableLike → GenTraversableOnce
def toSet[U >: T]: ParSet[U]
Преобразует это параллельное итерируемое множество в множество.
Примечание: не завершится для коллекций бесконечного размера.
- returns
множество, содержащее все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toStream: Stream[T]
Преобразует это параллельное итерируемое множество в поток.
- returns
поток, содержащий все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toString(): String
Создает строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.
- returns
строковое представление объекта.
- Definition Classes
- ParIterableLike → AnyRef → Any
def toTraversable: GenTraversable[T]
Преобразует это параллельное итерируемое множество в неопределяемое итерируемое множество. Вернет ту же коллекцию, если этот экземпляр уже является итерируемым множеством.
Примечание: не завершится для коллекций бесконечного размера.
- returns
итерируемое множество, содержащее все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def toVector: Vector[T]
Преобразует это параллельное итерируемое множество в вектор.
Примечание: не завершится для коллекций бесконечного размера.
- returns
вектор, содержащий все элементы этого параллельного итерируемого множества.
- Definition Classes
- ParIterableLike → GenTraversableOnce
def transpose[B](implicit asTraversable: (T) ⇒ GenTraversableOnce[B]): ParIterable[ParIterable[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
тип элементов каждой итерируемой коллекции.
- asTraversable
явное преобразование, которое утверждает, что тип элемента этой коллекции является
Traversable.- returns
двумерная коллекция коллекций, в которой n-я строка является n-м столбцом этой коллекции.
- Definition Classes
- GenericTraversableTemplate
- Annotations
- @migration
- Migration
(Изменено в версии 2.9.0)
transposeвызываетIllegalArgumentExceptionесли размеры коллекций не равны.- Исключения
IllegalArgumentExceptionесли все коллекции в этой коллекции не имеют одинаковый размер.
def unzip[A1, A2](implicit asPair: (T) ⇒ (A1, A2)): (ParIterable[A1], ParIterable[A2])
Преобразует эту коллекцию пар в две коллекции первой и второй половины каждой пары.
val xs = Traversable(
(1, "one"),
(2, "two"),
(3, "three")).unzip
// xs == (Traversable(1, 2, 3),
// Traversable(one, two, three))
- A1
тип первой половины пар элементов
- A2
тип второй половины пар элементов
- asPair
явное преобразование, которое утверждает, что тип элемента этой коллекции является парой.
- returns
пара коллекций, содержащая первую, соответственно вторую половину каждой пары элементов этой коллекции.
- Definition Classes
- GenericTraversableTemplate
def unzip3[A1, A2, A3](implicit asTriple: (T) ⇒ (A1, A2, A3)): (ParIterable[A1], ParIterable[A2], ParIterable[A3])
Преобразует это коллекцию троек в три коллекции из первого, второго и третьего элемента каждой тройки.
val xs = Traversable(
(1, "one", '1'),
(2, "two", '2'),
(3, "three", '3')).unzip3
// xs == (Traversable(1, 2, 3),
// Traversable(one, two, three),
// Traversable(1, 2, 3))
- A1
тип первого члена элементов-троек
- A2
тип второго члена элементов-троек
- A3
тип третьего члена элементов-троек
- asTriple
явное преобразование, которое утверждает, что тип элементов этой коллекции — тройка.
- returns
тройка коллекций, содержащая первый, второй и соответственно третий член каждой тройки элементов этой коллекции.
- Definition Classes
- GenericTraversableTemplate
final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
final def wait(arg0: Long): Unit
def withFilter(pred: (T) ⇒ Boolean): ParIterable[T]
- Definition Classes
- ParIterableLike
def wrap[R](body: ⇒ R): NonDivisible[R]
- Attributes
- protected
- Definition Classes
- ParIterableLike
def zip[B](that: GenIterable[B]): ParIterable[(A, B)]
Возвращает параллельную итерабельную коллекцию, образованную из этой параллельной итерабельной коллекции и другой итерабельной коллекции, объединяя соответствующие элементы в пары. Если одна из двух коллекций длиннее другой, ее оставшиеся элементы игнорируются.
Примечание: может вернуть разные результаты для разных запусков, если только тип базовой коллекции не упорядочен.
- B
тип второй половины возвращенных пар
- that
Итерабельная коллекция, предоставляющая вторую половину каждой результатной пары
- returns
новая параллельная итерабельная коллекция, содержащая пары, состоящие из соответствующих элементов этой параллельной итерабельной коллекции и
that. Длина возвращаемой коллекции — минимальная из длин этой параллельной итерабельной коллекции иthat.
- Definition Classes
- ParIterableLike → GenIterableLike
def zipAll[B](that: Iterable[B], thisElem: A, thatElem: B): ParIterable[(A, B)]
Возвращает параллельный итератор, сформированный из этого параллельного итератора и другой коллекции итераторов, объединяя соответствующие элементы попарно. Если одна из двух коллекций короче другой, элементы-заполнители используются для расширения более короткой коллекции до длины более длинной.
Примечание: может возвращать разные результаты для разных запусков, если только тип базовой коллекции не упорядочен.
- B
тип второй половины возвращаемых пар
- that
Итератор, предоставляющий вторую половину каждой пары результата
- thisElem
элемент, используемый для заполнения результата, если этот параллельный итератор короче
that.- thatElem
элемент, используемый для заполнения результата, если
thatкороче этого параллельного итератора.- returns
новый параллельный итератор, содержащий пары, состоящие из соответствующих элементов этого параллельного итератора и
that. Длина возвращаемой коллекции — максимальная из длин этого параллельного итератора иthat. Если этот параллельный итератор корочеthat, значенияthisElemиспользуются для дополнения результата. Еслиthatкороче этого параллельного итератора, значенияthatElemиспользуются для дополнения результата.
- Definition Classes
- ParIterableLike → GenIterableLike
def zipWithIndex: ParIterable[(A, Int)]
Объединяет этот параллельный итератор с его индексами.
Примечание: может возвращать разные результаты для разных запусков, если только тип базовой коллекции не упорядочен.
- returns
Новый параллельный итератор, содержащий пары, состоящие из всех элементов этого параллельного итератора, соединённых с их индексом. Индексы начинаются с
0.
- Definition Classes
- ParIterableLike → GenIterableLike
List("a", "b", "c").zipWithIndex = List(("a", 0), ("b", 1), ("c", 2))
def →[B](y: B): (ParIterable[T], B)
- Неявный
- Этот член добавлен неявным преобразованием из ParIterable[T] в ArrowAssoc[ParIterable[T]], выполненное методом ArrowAssoc в scala.Predef.
- Definition Classes
- ArrowAssoc
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/collection/parallel/immutable/ParIterable.html
Шаблонный трейт для неизменяемых параллельных итерируемых коллекций.
Это базовый трейт для параллельных коллекций Scala. Он определяет поведение, общее для всех параллельных коллекций. Конкретные параллельные коллекции должны наследовать этот трейт и
ParIterableесли они хотят определить специфические фабрики комбайнеров.Параллельные операции реализованы с помощью алгоритмов «разделяй и властвуй», которые хорошо распараллеливаются. Основная идея состоит в разделении коллекции на меньшие части до тех пор, пока они не станут достаточно малыми для последовательной обработки.
Все параллельные операции реализованы как задачи в этом трейте. Задачи полагаются на концепцию разделителей, которые расширяют итераторы. Каждая параллельная коллекция определяет:
которая возвращает экземпляр
IterableSplitter[T], который является подтипомSplitter[T]. Разделители имеют методremainingдля проверки оставшегося количества элементов и методsplit, который определяется разделителями. Методsplitделит итерацию разделителей на непересекающиеся подмножества:который разделяет разделитель на последовательность непересекающихся подразделителей. Обычно это очень быстрая операция, которая просто создаёт обёртки вокруг коллекции-получателя. Это можно повторять рекурсивно.
Задачи планируются для выполнения через объект scala.collection.parallel.TaskSupport, который может быть изменён через
tasksupportустановщик коллекции.Метод
newCombinerсоздаёт новый комбайнер. Комбайнеры являются расширением билдеров. Они предоставляют методcombineкоторый объединяет два комбайнера и возвращает комбайнер, содержащий элементы обоих комбайнеров. Этот метод может быть реализован путём агрессивной копии всех элементов в новый комбайнер или путём ленивой связи их результатов. Рекомендуется избегать копирования всех элементов по соображениям производительности, хотя эта стоимость может быть незначительной в зависимости от конкретного случая. Стандартные комбайнеры параллельных коллекций избегают копирования при объединении результатов, полагаясь либо на двухэтапную ленивую конструкцию, либо на специфические свойства структуры данных.Методы:
производят последовательную или параллельную реализацию коллекции соответственно. Метод
parпросто возвращает ссылку на эту параллельную коллекцию. Методseqэффективный — он не копирует элементы. Вместо этого он создаёт последовательную версию коллекции, используя ту же самую базовую структуру данных. Обратите внимание, что это не всегда верно для последовательных коллекций в целом — они могут копировать элементы и создавать другую базовую структуру данных.Сочетание методов
toMap,toSeqилиtoSetвместе сparиseqявляется гибким способом переключения между различными типами коллекций.Поскольку этот трейт расширяет
GenIterableтрейт, методы, такие какsize, также должны быть реализованы в конкретных коллекциях, в то время какiteratorпередаёт по умолчаниюsplitter.Каждая параллельная коллекция привязана к конкретному пулу fork/join, в котором хранятся спящие потоки-работники. Пул fork/join содержит другую информацию, например, уровень параллелизма, то есть количество используемых процессоров. При создании коллекции ей назначается по умолчанию пул fork/join, найденный в
scala.parallelпакете-объекте.Параллельные коллекции не обязательно упорядочены в терминах операции
foreach(см.Traversable). У параллельных последовательностей есть чётко определённый порядок для итераторов — создание итератора и линейное перемещение по элементам всегда приведут к одному и тому же порядку. Однако массовые операции, такие какforeach,mapилиfilter, всегда происходят в неопределённом порядке для всех параллельных коллекций.Существующие реализации параллельных коллекций предоставляют жёсткие параллельные итераторы. Жёсткие параллельные итераторы знают количество элементов, которые им ещё предстоит пройти. Также возможно предоставить нежёсткие параллельные итераторы, которые не знают количество оставшихся элементов. Для этого новая реализация коллекции должна переопределить
isStrictSplitterCollectionвfalse. Это сделает некоторые операции недоступными.Для создания новой параллельной коллекции, расширьте
ParIterableтрейт и реализуйтеsize,splitter,newCombinerиseq. Необходимость явного комбайнера-фабрики требует расширения этого трейта, а также предоставления компаньон-объекта, как и для обычных коллекций.Метод
sizeреализован как операция постоянного времени для параллельных коллекций, и операции параллельных коллекций полагаются на это предположение.Функции высшего порядка, переданные в некоторые операции, могут содержать побочные эффекты. Поскольку реализации массовых операций могут быть не последовательными, это означает, что побочные эффекты могут быть непредсказуемыми и могут привести к проблемам с одновременным доступом к данным, тупикам или нарушению состояния, если не позаботиться об этом. Программисту необходимо либо избегать использования побочных эффектов, либо использовать некоторую форму синхронизации при доступе к изменяемым данным.
тип элементов коллекции
2.9