Пакет scala.collection
пакет collection
Члены типов
абстрактный класс AbstractIterable[+A] extends AbstractTraversable[A] with Iterable[A]
абстрактный класс AbstractIterator[+A] extends Iterator[A]
абстрактный класс AbstractMap[K, +V] extends AbstractIterable[(K, V)] with Map[K, V]
абстрактный класс AbstractSeq[+A] extends AbstractIterable[A] with Seq[A]
абстрактный класс AbstractSet[A] extends AbstractIterable[A] with Set[A]
абстрактный класс AbstractTraversable[+A] extends Traversable[A]
тракт BitSet extends SortedSet[Int] with BitSetLike[BitSet]
Базовый общий класс для изменяемых и неизменяемых битовых множеств.
Битовые множества — это множества неотрицательных целых чисел, которые представляются массивами переменной длины из битов, упакованных в 64-битные слова. Занимаемая память битового множества определяется наибольшим в нём числом.
тракт BitSetLike[+This <: BitSetLike[This] with SortedSet[Int]] extends SortedSetLike[Int, This]
Шаблонный тракт для битовых множеств.
Битовые множества — это множества неотрицательных целых чисел, которые представляются массивами переменной длины из битов, упакованных в 64-битные слова. Занимаемая память битового множества определяется наибольшим в нём числом.
Этот тракт предоставляет большинство операций над BitSet независимо от его представления. Он наследуется всеми конкретными реализациями битовых множеств.
- This
тип самого битового множества.
тракт BufferedIterator[+A] extends Iterator[A]
Буферизованные итераторы — это итераторы, которые предоставляют метод head для проверки следующего элемента без его удаления.
- Since
2.8
тракт CustomParallelizable[+A, +ParRepr <: Parallel] extends Parallelizable[A, ParRepr]
тракт DefaultMap[A, +B] extends Map[A, B]
Значение по умолчанию для карты, которая реализует методы + и - карт.
Классы-наследники от DefaultMap[A, B] должны определять:
def get(key: A): Option[B] def iterator: Iterator[(A, B)]
Он ссылается на исходную карту.
Возможно, стоит переопределить foreach или size, если удастся найти эффективные реализации.
- Since
2.8
тракт GenIterable[+A] extends GenIterableLike[A, GenIterable[A]] with GenTraversable[A] with GenericTraversableTemplate[A, GenIterable]
Тракт для всех итерируемых коллекций, операции которых могут быть реализованы параллельно.
- Since
2.9
тракт GenIterableLike[+A, +Repr] extends GenTraversableLike[A, Repr]
Шаблонный трайт для всех итерируемых коллекций, операции над которыми могут быть реализованы параллельно.
Этот трайт содержит абстрактные методы и методы, которые могут быть реализованы непосредственно через другие методы.
trait GenMap[K, +V] extends GenMapLike[K, V, GenMap[K, V]] with GenIterable[(K, V)]
Трайт для всех проходных коллекций, операции над которыми могут быть реализованы параллельно.
- Since
2.9
trait GenMapLike[K, +V, +Repr] extends GenIterableLike[(K, V), Repr] with Equals with Parallelizable[(K, V), ParMap[K, V]]
trait GenSeq[+A] extends GenSeqLike[A, GenSeq[A]] with GenIterable[A] with Equals with GenericTraversableTemplate[A, GenSeq]
Трайт для всех последовательностей, операции над которыми могут быть реализованы параллельно.
- Since
2.9
trait GenSeqLike[+A, +Repr] extends GenIterableLike[A, Repr] with Equals with Parallelizable[A, ParSeq[A]]
trait GenSet[A] extends GenSetLike[A, GenSet[A]] with GenIterable[A] with GenericSetTemplate[A, GenSet]
Трайт для множеств, операции над которыми могут быть реализованы параллельно.
- Since
2.9
trait GenSetLike[A, +Repr] extends GenIterableLike[A, Repr] with (A) ⇒ Boolean with Equals with Parallelizable[A, ParSet[A]]
trait GenTraversable[+A] extends GenTraversableLike[A, GenTraversable[A]] with GenTraversableOnce[A] with GenericTraversableTemplate[A, GenTraversable]
Трайт для всех проходных коллекций, операции над которыми могут быть реализованы параллельно.
- Since
2.9
trait GenTraversableLike[+A, +Repr] extends GenTraversableOnce[A] with Parallelizable[A, ParIterable[A]]
trait GenTraversableOnce[+A] extends Any
Шаблонный трайт для всех объектов, которые можно проходить один раз, и которые могут быть обработаны параллельно.
Методы в этом трайте либо абстрактные, либо могут быть реализованы через другие методы.
trait IndexedSeq[+A] extends Seq[A] with GenericTraversableTemplate[A, IndexedSeq] with IndexedSeqLike[A, IndexedSeq[A]]
Базовый интерфейс для индексированных последовательностей.
Индексированные последовательности поддерживают доступ к элементам и вычисление длины за констанное или почти констанное время. Они определяются абстрактными методами apply для индексирования и length.
Индексированные последовательности не добавляют новых методов к Seq, но обеспечивают эффективную реализацию операций случайного доступа.
trait IndexedSeqLike[+A, +Repr] extends SeqLike[A, Repr]
Шаблонный интерфейс для индексированных последовательностей типа IndexedSeq[A].
Индексированные последовательности поддерживают доступ к элементам и вычисление длины за константное или почти константное время. Они определяются абстрактными методами apply для индексирования и length.
Индексированные последовательности не добавляют новых методов к Seq, но обеспечивают эффективную реализацию операций случайного доступа.
Этот интерфейс просто реализует iterator в терминах apply и length. Однако см. IndexedSeqOptimized для интерфейса реализации, который переопределяет операции для повышения производительности при условии быстрого случайного доступа с apply.
trait IndexedSeqOptimized[+A, +Repr] extends IndexedSeqLike[A, Repr]
Шаблонный интерфейс для индексированных последовательностей типа IndexedSeq[A], оптимизирующий реализацию нескольких методов при условии быстрого случайного доступа.
Индексированные последовательности поддерживают доступ к элементам и вычисление длины за константное или почти константное время. Они определяются абстрактными методами apply для индексирования и length.
Индексированные последовательности не добавляют новых методов к Seq, но обеспечивают эффективную реализацию операций случайного доступа.
trait Iterable[+A] extends Traversable[A] with GenIterable[A] with GenericTraversableTemplate[A, Iterable] with IterableLike[A, Iterable[A]]
Базовый интерфейс для итерируемых коллекций.
Это базовый интерфейс для всех коллекций Scala, которые определяют метод iterator для пошагового перебора элементов коллекции. Реализации этого интерфейса должны предоставлять конкретный метод с сигнатурой:
def iterator: Iterator[A]
Они также должны предоставить метод newBuilder для создания билдера для коллекций того же типа.
Этот интерфейс реализует метод Iterable's foreach путём пошагового перебора всех элементов с помощью iterator. Подклассы должны переопределить foreach на более эффективный способ, если это возможно.
Этот интерфейс добавляет методы iterator, sameElements, takeRight, dropRight к методам, унаследованным от интерфейса `Traversable`.
Примечание: Этот интерфейс заменяет каждый метод, использующий break в TraversableLike, на версию с итератором.
trait IterableLike[+A, +Repr] extends Equals with TraversableLike[A, Repr] with GenIterableLike[A, Repr]
Шаблонный интерфейс для итерируемых коллекций типа Iterable[A].
Это базовый интерфейс для всех коллекций Scala, которые определяют метод iterator для пошагового перебора элементов коллекции. Реализации этого интерфейса должны предоставлять конкретный метод с сигнатурой:
def iterator: Iterator[A]
Они также должны предоставить метод newBuilder для создания билдера для коллекций того же типа.
Этот интерфейс реализует метод Iterable's foreach путём пошагового перебора всех элементов с помощью iterator. Подклассы должны переопределить foreach на более эффективный способ, если это возможно.
Этот интерфейс добавляет методы iterator, sameElements, takeRight, dropRight к методам, унаследованным от интерфейса `Traversable`.
Примечание: Этот интерфейс заменяет каждый метод, использующий break в TraversableLike, на версию с итератором.
trait IterableView[+A, +Coll] extends IterableViewLike[A, Coll, IterableView[A, Coll]]
Базовый интерфейс для ленивых представлений итерируемых коллекций.
Представление — это ленивая версия некоторой коллекции. Преобразователи коллекций, такие как map или filter или ++, не проходят по элементам при применении к представлению. Вместо этого они создают новое представление, просто записывая тот факт, что операция должна быть применена. Элементы коллекции и операции представления применяются, когда требуется результат, не являющийся представлением, или когда вызывается метод force на представлении. Все представления для итерируемых коллекций определяются путём повторной интерпретации метода iterator.
trait IterableViewLike[+A, +Coll, +This <: IterableView[A, Coll] with IterableViewLike[A, Coll, This]] extends Iterable[A] with IterableLike[A, This] with TraversableView[A, Coll] with TraversableViewLike[A, Coll, This]
Шаблонный интерфейс для нестрогих представлений итерируемых коллекций.
Представление — это ленивая версия некоторой коллекции. Трансформаторы коллекций, такие как map или filter или ++, не обходятся по элементам при применении к представлению. Вместо этого они создают новое представление, которое просто записывает тот факт, что операция должна быть применена. Элементы коллекции и операции представления применяются, когда требуется результат, не являющийся представлением, или когда вызывается метод force на представлении. Все представления для итерируемых коллекций определяются заново интерпретируя метод iterator.
trait Iterator[+A] extends TraversableOnce[A]
Итераторы — это структуры данных, которые позволяют перебирать последовательность элементов. Они имеют метод hasNext для проверки наличия следующего элемента и метод next, который возвращает следующий элемент и продвигает итератор.
Итератор изменяемый: большинство операций с ним изменяют его состояние. Хотя он часто используется для перебора элементов коллекции, он также может использоваться без привязки к какой-либо коллекции (см. конструкторы в компаньоне).
Важно отметить, что, если не указано иное, не следует использовать итератор после вызова метода на нем. Два самых важных исключения — это также единственные абстрактные методы: next и hasNext.
Оба этих метода можно вызывать любое количество раз без отбрасывания итератора. Обратите внимание, что даже hasNext может вызвать мутацию — например, при итерации из потока ввода, где он будет блокироваться до закрытия потока или появления некоторого входного сигнала.
Рассмотрим этот пример безопасного и небезопасного использования:
def f[A](it: Iterator[A]) = {
if (it.hasNext) { // Safe to reuse "it" after "hasNext"
it.next // Safe to reuse "it" after "next"
val remainder = it.drop(2) // it is *not* safe to use "it" again after this line!
remainder.take(2) // it is *not* safe to use "remainder" after this line!
} else it
}
- Since
1
trait LinearSeq[+A] extends Seq[A] with GenericTraversableTemplate[A, LinearSeq] with LinearSeqLike[A, LinearSeq[A]]
Базовый интерфейс для линейных последовательностей.
Линейные последовательности имеют достаточно эффективные методы head, tail, и isEmpty. Если эти методы обеспечивают самый быстрый способ обхода коллекции, коллекция Coll, которая расширяет этот интерфейс, также должна расширять LinearSeqOptimized[A, Coll[A]].
trait LinearSeqLike[+A, +Repr <: LinearSeqLike[A, Repr]] extends SeqLike[A, Repr]
Шаблонный интерфейс для линейных последовательностей типа LinearSeq[A].
Этот интерфейс просто реализует iterator и corresponds через isEmpty, head, и tail. Однако, см. LinearSeqOptimized для интерфейса реализации, который переопределяет многие другие операции, чтобы сделать их более быстрыми при предположении о быстром линейном доступе с head и tail.
Линейные последовательности не добавляют новых методов к Seq, но обещают эффективную реализацию линейных шаблонов доступа.
- A
тип элементов последовательности
- Repr
тип фактической последовательности, содержащей элементы.
- Since
2.8
trait LinearSeqOptimized[+A, +Repr <: LinearSeqOptimized[A, Repr]] extends LinearSeqLike[A, Repr]
Шаблонный интерфейс для линейных последовательностей типа LinearSeq[A], оптимизирующий реализацию различных методов при предположении быстрого линейного доступа.
Линейно оптимизированные последовательности реализуют большинство операций с точки зрения трех методов, которые предполагаются иметь эффективную реализацию. Это:
def isEmpty: Boolean def head: A def tail: Repr
Здесь A — тип элементов последовательности, а Repr — тип самой последовательности. Обратите внимание, что реализации по умолчанию предоставляются по наследованию, но эти значения следует переопределять для повышения производительности.
trait Map[K, +V] extends Iterable[(K, V)] with GenMap[K, V] with MapLike[K, V, Map[K, V]]
Карта, сопоставляющая ключи типа K со значениями типа V.
Примечание о реализации: Этот трайт предоставляет большинство операций с Map независимо от его представления. Обычно он наследуется конкретными реализациями карт.
Для реализации конкретной карты необходимо предоставить реализации следующих методов:
def get(key: K): Option[V] def iterator: Iterator[(K, V)] def + [V1 >: V](kv: (K, V1)): This def -(key: K): This
Если вы хотите, чтобы методы, такие как take, drop, filter, также возвращали карту того же типа, вам также следует переопределить:
def empty: This
Также рекомендуется переопределить методы foreach и size для повышения эффективности.
Примечание: Если у вас нет конкретных реализаций для add и - в виду, вы можете рассмотреть возможность наследования от DefaultMap вместо этого.
Примечание: Если ваши добавления и изменения возвращают карту того же типа, что и карта, которую вы определяете, вам также следует унаследовать от MapLike.
- K
тип ключей в этой карте.
- V
тип значений, связанных с ключами.
- Since
1.0
trait MapLike[K, +V, +This <: MapLike[K, V, This] with Map[K, V]] extends PartialFunction[K, V] with IterableLike[(K, V), This] with GenMapLike[K, V, This] with Subtractable[K, This] with Parallelizable[(K, V), ParMap[K, V]]
Шаблонный трайт для карт, которые сопоставляют ключи со значениями.
Примечание о реализации: Этот трайт предоставляет большинство операций с Map независимо от его представления. Обычно он наследуется конкретными реализациями карт.
Для реализации конкретной карты необходимо предоставить реализации следующих методов:
def get(key: K): Option[V] def iterator: Iterator[(K, V)] def + [V1 >: V](kv: (K, V1)): This def -(key: K): This
Если вы хотите, чтобы методы, такие как take, drop, filter также возвращали карту того же типа, вам также следует переопределить:
def empty: This
Также рекомендуется переопределить методы foreach и size для повышения эффективности.
- Since
2.8
trait Parallel extends AnyRef
Маркерный трайт для коллекций, операции которых распараллелены.
- Since
2.9
trait Parallelizable[+A, +ParRepr <: Parallel] extends Any
Этот трайт описывает коллекции, которые могут быть преобразованы в параллельные коллекции с помощью вызова метода par. Параллелизуемые коллекции могут быть параметризованы типом-целью, отличным от их собственного.
- A
тип элементов в коллекции
- ParRepr
фактический тип коллекции, которая должна быть параллельной
trait Seq[+A] extends PartialFunction[Int, A] with Iterable[A] with GenSeq[A] with GenericTraversableTemplate[A, Seq] with SeqLike[A, Seq[A]]
Базовый трайт для последовательностей.
Последовательности — это специальные случаи итерируемых коллекций класса Iterable. В отличие от итерируемых коллекций, последовательности всегда имеют определенный порядок элементов. Последовательности предоставляют метод apply для индексирования. Индексы варьируются от 0 до length последовательности. Последовательности поддерживают ряд методов для поиска вхождения элементов или подпоследовательностей, включая segmentLength, prefixLength, indexWhere, indexOf, lastIndexWhere, lastIndexOf, startsWith, endsWith, indexOfSlice.
Еще один способ рассматривать последовательность — как PartialFunction от Int значений до типа элементов последовательности. Метод isDefinedAt последовательности возвращает true для интервала от 0 до length.
К последовательностям можно получить доступ в обратном порядке их элементов с помощью методов reverse и reverseIterator.
Последовательности имеют два основных подтрайте, IndexedSeq и LinearSeq, которые предоставляют разные гарантии производительности. IndexedSeq обеспечивает быстрый произвольный доступ к элементам и быструю операцию length. LinearSeq обеспечивает быстрый доступ только к первому элементу через head, но также имеет быструю операцию tail.
trait SeqLike[+A, +Repr] extends IterableLike[A, Repr] with GenSeqLike[A, Repr] with Parallelizable[A, ParSeq[A]]
Черта шаблона для последовательностей типа Seq[A]
Последовательности являются частными случаями итерируемых коллекций класса Iterable. В отличие от итерируемых объектов, последовательности всегда имеют определённый порядок элементов. Последовательности предоставляют метод apply для индексирования. Индексы варьируются от 0 до length последовательности. Последовательности поддерживают ряд методов для поиска вхождений элементов или подпоследовательностей, включая segmentLength, prefixLength, indexWhere, indexOf, lastIndexWhere, lastIndexOf, startsWith, endsWith, indexOfSlice.
Другой способ увидеть последовательность — это как PartialFunction от Int значений к типу элемента последовательности. Метод isDefinedAt последовательности возвращает true для интервала от 0 до length.
К последовательностям можно обращаться в обратном порядке их элементов, используя методы reverse и reverseIterator.
Последовательности имеют две основные подчерты, IndexedSeq и LinearSeq, которые дают разные гарантии производительности. IndexedSeq обеспечивает быстрый доступ к элементам произвольным доступом и быструю операцию length. LinearSeq обеспечивает быстрый доступ только к первому элементу через head, но также имеет быструю операцию tail.
trait SeqView[+A, +Coll] extends SeqViewLike[A, Coll, SeqView[A, Coll]]
Базовый признак для нестрогих представлений последовательностей.
Представление — это ленивая версия некоторой коллекции. Трансформаторы коллекций, такие как map или filter или ++, не обрабатывают элементы, когда применяются к представлению. Вместо этого они создают новое представление, которое просто регистрирует тот факт, что операция должна быть применена. Элементы коллекции доступны, и операции представления применяются, когда нужен результат без представления, или когда метод force вызывается для представления. Все представления для последовательностей определяются путем переосмысления методов length и apply.
trait SeqViewLike[+A, +Coll, +This <: SeqView[A, Coll] with SeqViewLike[A, Coll, This]] extends Seq[A] with SeqLike[A, This] with IterableView[A, Coll] with IterableViewLike[A, Coll, This]
Черта шаблона для нестрогих представлений последовательностей.
Представление — это ленивая версия некоторой коллекции. Трансформаторы коллекций, такие как map или filter или ++, не обрабатывают элементы, когда применяются к представлению. Вместо этого они создают новое представление, которое просто регистрирует тот факт, что операция должна быть применена. Элементы коллекции доступны, и операции представления применяются, когда нужен результат без представления, или когда метод force вызывается для представления. Все представления для последовательностей определяются путем переосмысления методов length и apply.
trait Set[A] extends (A) ⇒ Boolean with Iterable[A] with GenSet[A] with GenericSetTemplate[A, Set] with SetLike[A, Set[A]]
Базовый признак для всех множеств, как изменяемых, так и неизменяемых.
Множество — это коллекция, которая не содержит дублирующихся элементов.
Для реализации конкретного множества необходимо предоставить реализации следующих методов:
def contains(key: A): Boolean def iterator: Iterator[A] def +(elem: A): This def -(elem: A): This
Если вы хотите, чтобы методы, такие как take, drop, filter, возвращали тот же тип множества, вам также следует переопределить:
def empty: This
Также рекомендуется переопределить методы foreach и size для повышения эффективности.
Примечание по реализации: Если ваши добавления и изменения возвращают тот же тип множества, что и множество, которое вы определяете, вам также следует унаследовать от SetLike.
- Since
1.0
trait SetLike[A, +This <: SetLike[A, This] with Set[A]] extends IterableLike[A, This] with GenSetLike[A, This] with Subtractable[A, This] with Parallelizable[A, ParSet[A]]
Черта шаблона для множеств.
Множество — это коллекция, которая не содержит дублирующихся элементов.
Для реализации конкретного множества необходимо предоставить реализации следующих методов:
def contains(key: A): Boolean def iterator: Iterator[A] def +(elem: A): This def -(elem: A): This
Если вы хотите, чтобы методы, такие как take, drop, filter, возвращали тот же тип множества, вам также следует переопределить:
def empty: This
Также рекомендуется переопределить методы foreach и size для повышения эффективности.
Примечание по реализации: Эта черта предоставляет большинство операций Set независимо от его представления. Она обычно наследуется конкретными реализациями множеств.
- Since
2.8
trait SortedMap[A, +B] extends Map[A, B] with SortedMapLike[A, B, SortedMap[A, B]]
Карта, ключи которой отсортированы.
- Since
2.4
trait SortedMapLike[A, +B, +This <: SortedMapLike[A, B, This] with SortedMap[A, B]] extends Sorted[A, This] with MapLike[A, B, This]
Шаблон для карт, ключи которых отсортированы. Чтобы создать конкретную отсортированную карту, необходимо реализовать метод rangeImpl, помимо методов MapLike.
- Since
2.8
trait SortedSet[A] extends Set[A] with SortedSetLike[A, SortedSet[A]]
Отсортированное множество.
- Since
2.4
trait SortedSetLike[A, +This <: SortedSet[A] with SortedSetLike[A, This]] extends Sorted[A, This] with SetLike[A, This]
Шаблон для множеств, которые отсортированы.
- Since
2.8
trait Traversable[+A] extends TraversableLike[A, Traversable[A]] with GenTraversable[A] with TraversableOnce[A] with GenericTraversableTemplate[A, Traversable]
Интерфейс для итерируемых коллекций. Все операции гарантированно выполняются в однопоточном режиме.
Это базовый интерфейс всех видов коллекций Scala. Он реализует поведение, общее для всех коллекций, в терминах метода foreach с сигнатурой:
def foreach[U](f: Elem => U): Unit
Классы коллекций, использующие этот интерфейс, обеспечивают конкретный метод foreach , который итерирует по всем элементам, содержащимся в коллекции, применяя к каждому заданную функцию. Они также должны предоставить метод newBuilder , который создает билдер для коллекций того же типа.
Класс итерируемой коллекции может или не может иметь два свойства: строгость и упорядоченность. Ни одно из них не представлено как тип.
Экземпляры строгой коллекции вычисляют все свои элементы, прежде чем они могут быть использованы в качестве значений. В отличие от этого, экземпляры нестрогой коллекции могут отложить вычисление некоторых своих элементов до момента, когда экземпляр доступен как значение. Типичным примером нестрогой коллекции является scala.collection.immutable.Stream. Более общие примеры - TraversableViews.
Если коллекция является экземпляром упорядоченного класса коллекции, итерирование по ее элементам с помощью foreach всегда будет посещать элементы в том же порядке, даже для разных запусков программы. Если класс не упорядочен, foreach может посещать элементы в разных порядках для разных запусков (но сохраняет тот же порядок в одном запуске).
Типичным примером класса коллекции, который не является упорядоченным, является HashMap объектов. Порядок обхода для хэш-карт будет зависеть от хэш-кодов ее элементов, а эти хэш-коды могут отличаться от одного запуска к другому. В отличие от этого, LinkedHashMap упорядочен, потому что его метод foreach посещает элементы в порядке их вставки в HashMap.
trait TraversableLike[+A, +Repr] extends HasNewBuilder[A, Repr] with FilterMonadic[A, Repr] with TraversableOnce[A] with GenTraversableLike[A, Repr] with Parallelizable[A, ParIterable[A]]
Шаблонный интерфейс для итерируемых коллекций типа Traversable[A].
Это базовый интерфейс всех видов коллекций Scala. Он реализует поведение, общее для всех коллекций, в терминах метода foreach с сигнатурой:
def foreach[U](f: Elem => U): Unit
Классы коллекций, использующие этот интерфейс, обеспечивают конкретный метод foreach , который итерирует по всем элементам, содержащимся в коллекции, применяя к каждому заданную функцию. Они также должны предоставить метод newBuilder , который создает билдер для коллекций того же типа.
Класс итерируемой коллекции может или не может иметь два свойства: строгость и упорядоченность. Ни одно из них не представлено как тип.
Экземпляры строгой коллекции вычисляют все свои элементы, прежде чем они могут быть использованы в качестве значений. В отличие от этого, экземпляры нестрогой коллекции могут отложить вычисление некоторых своих элементов до момента, когда экземпляр доступен как значение. Типичным примером нестрогой коллекции является scala.collection.immutable.Stream. Более общие примеры - TraversableViews.
Если коллекция является экземпляром упорядоченного класса коллекции, итерирование по ее элементам с помощью foreach всегда будет посещать элементы в том же порядке, даже для разных запусков программы. Если класс не упорядочен, foreach может посещать элементы в разных порядках для разных запусков (но сохраняет тот же порядок в одном запуске).
Типичным примером класса коллекции, который не является упорядоченным, является HashMap объектов. Порядок обхода для хэш-карт будет зависеть от хэш-кодов ее элементов, а эти хэш-коды могут отличаться от одного запуска к другому. В отличие от этого, LinkedHashMap упорядочен, потому что его метод foreach посещает элементы в порядке их вставки в HashMap.
trait TraversableOnce[+A] extends GenTraversableOnce[A]
Шаблонный трайт для коллекций, которые можно пройти только один раз или один или несколько раз.
Этот трайт существует в основном для устранения дублирования кода между Iterator и Traversable, и поэтому реализует некоторые общие методы, которые могут быть реализованы только в терминах foreach без доступа к Builder. Он также включает в себя ряд абстрактных методов, реализации которых предоставляются Iterator, Traversable, и т. д. Он содержит реализации, общие для Iterators и Traversables, такие как folds, преобразования и другие операции, которые проходят по некоторым или всем элементам и возвращают производное значение. Не рекомендуется непосредственно наследоваться от TraversableOnce - вместо этого следует рассмотреть объявление Iterator с методом next и hasNext или создание Iterator с одним из методов объекта Iterator. Если элементы можно проходить многократно, следует рассмотреть объявление подкласса Traversable.
- Since
2.8
trait TraversableView[+A, +Coll] extends TraversableViewLike[A, Coll, TraversableView[A, Coll]]
Базовый трайт для нестрогих представлений итерируемых коллекций.
Представление — это ленивая версия некоторой коллекции. Преобразования коллекций, такие как map или filter или ++, не просматривают элементы при применении к представлению. Вместо этого они создают новое представление, просто фиксируя тот факт, что операция должна быть применена. Элементы коллекции и операции представления обрабатываются, когда требуется результат, не являющийся представлением, или когда вызывается метод force для представления.
Все представления итерируемых коллекций определяются путем создания нового метода foreach.
trait TraversableViewLike[+A, +Coll, +This <: TraversableView[A, Coll] with TraversableViewLike[A, Coll, This]] extends Traversable[A] with TraversableLike[A, This] with ViewMkString[A]
Шаблонный трайт для нестрогих представлений итерируемых коллекций.
Представление — это ленивая версия некоторой коллекции. Преобразования коллекций, такие как map или filter или ++, не просматривают элементы при применении к представлению. Вместо этого они создают новое представление, просто фиксируя тот факт, что операция должна быть применена. Элементы коллекции и операции представления обрабатываются, когда требуется результат, не являющийся представлением, или когда вызывается метод force для представления.
Все представления итерируемых коллекций определяются путем создания нового метода foreach.
Примечание по реализации: методы, такие как map или flatMap в этом представлении, не вызовут неявно переданную фабрику Builder, а вместо этого напрямую вернут новое представление для сохранения поведения по имени. Затем новое представление приводится к типу результата фабрики. Это означает, что каждый CanBuildFrom, который принимает View в качестве типа параметра From, должен возвращать то же представление (или общий суперкласс), что и его параметр результата. Если это предположение нарушено, могут возникнуть ошибки при приведении типов.
trait ViewMkString[+A] extends AnyRef
trait IterableProxy[+A] extends Iterable[A] with IterableProxyLike[A, Iterable[A]]
Этот трайт реализует прокси для итерируемых объектов. Он перенаправляет все вызовы на другой итерируемый объект.
- Annotations
- @deprecated
- Устарело
(С версии 2.11.3) Прокси устарели из-за отсутствия использования и поддержки на уровне компилятора
- Since
2.8
trait IterableProxyLike[+A, +Repr <: IterableLike[A, Repr] with Iterable[A]] extends IterableLike[A, Repr] with TraversableProxyLike[A, Repr]
Этот трайт реализует прокси для объектов Iterable. Он перенаправляет все вызовы на другой объект Iterable.
- Annotations
- @deprecated
- Устарело
(С версии 2.11.0) Прокси устарели из-за отсутствия использования и поддержки на уровне компилятора
- Since
2.8
trait MapProxy[A, +B] extends Map[A, B] with MapProxyLike[A, B, Map[A, B]]
Это простой оберточный класс для scala.collection.Map. Он наиболее полезен для динамического создания настраиваемых абстракций карт с использованием композиции объектов и перенаправления.
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.3) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
1
trait MapProxyLike[A, +B, +This <: MapLike[A, B, This] with Map[A, B]] extends MapLike[A, B, This] with IterableProxyLike[(A, B), This]
Этот трейт реализует прокси для объектов Map. Он перенаправляет все вызовы на другой объект Map.
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
2.8
trait SeqProxy[+A] extends Seq[A] with SeqProxyLike[A, Seq[A]]
Этот трейт реализует прокси для объектов последовательностей. Он перенаправляет все вызовы на другой объект последовательности.
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
2.8
trait SeqProxyLike[+A, +Repr <: SeqLike[A, Repr] with Seq[A]] extends SeqLike[A, Repr] with IterableProxyLike[A, Repr]
Этот трейт реализует прокси для последовательностей. Он перенаправляет все вызовы на другую последовательность.
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
2.8
trait SetProxy[A] extends Set[A] with SetProxyLike[A, Set[A]]
Это простой оберточный класс для scala.collection.Set. Он наиболее полезен для динамического создания настраиваемых абстракций множеств с использованием композиции объектов и перенаправления.
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.3) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
2.0
trait SetProxyLike[A, +This <: SetLike[A, This] with Set[A]] extends SetLike[A, This] with IterableProxyLike[A, This]
Этот трейт реализует прокси для множеств. Он перенаправляет все вызовы на другое множество.
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.0) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
2.8
trait TraversableProxy[+A] extends Traversable[A] with TraversableProxyLike[A, Traversable[A]]
Этот трейт реализует прокси для объектов итерируемых объектов. Он перенаправляет все вызовы на другой объект итерируемого объекта
- Аннотации
- @deprecated
- Устаревшее
(С версии 2.11.3) перенаправление устарело из-за отсутствия использования и поддержки на уровне компилятора
- С версии
2.8
trait TraversableProxyLike[+A, +Repr <: TraversableLike[A, Repr] with Traversable[A]] extends TraversableLike[A, Repr] with Proxy
Этот трайт реализует прокси для объектов Traversable. Он перенаправляет все вызовы на другой объект Traversable.
- Annotations
- @deprecated
- Устаревшее
(С версии 2.11.0) Проксирование устарело из-за отсутствия использования и поддержки на уровне компилятора
- Since
2.8
Члены-значения
def breakOut[From, T, To](implicit b: CanBuildFrom[Nothing, T, To]): CanBuildFrom[From, T, To]
object +:
object :+
object BitSet extends BitSetFactory[BitSet]
object BitSetLike
Объект-компаньон для наборов битов. Содержит только приватные данные
object GenIterable extends GenTraversableFactory[GenIterable]
object GenMap extends GenMapFactory[GenMap]
object GenSeq extends GenTraversableFactory[GenSeq]
object GenSet extends GenTraversableFactory[GenSet]
object GenTraversable extends GenTraversableFactory[GenTraversable]
object IndexedSeq extends IndexedSeqFactory[IndexedSeq]
Этот объект предоставляет набор операций для создания значений. Текущая реализация IndexedSeqIndexedSeq по умолчанию — это Vector.
object Iterable extends GenTraversableFactory[Iterable] with TraversableFactory[Iterable]
Этот объект предоставляет набор операций для создания значений. Текущая реализация IterableIterable по умолчанию — это List.
object IterableView
Объект, содержащий необходимые неявные определения для работы с IterableView. Его определения обычно не используются клиентами напрямую.
object Iterator
Объект Iterator предоставляет различные функции для создания специализированных итераторов.
- Since
2.8
object JavaConverters extends DecorateAsJava with DecorateAsScala
Различные декораторы, позволяющие преобразовывать между коллекциями Scala и Java с помощью методов расширения, asScala и asJava.
Методы расширения возвращают адаптеры для соответствующего API.
Следующие преобразования поддерживаются с помощью asScala и asJava:
scala.collection.Iterable <=> java.lang.Iterable scala.collection.Iterator <=> java.util.Iterator scala.collection.mutable.Buffer <=> java.util.List scala.collection.mutable.Set <=> java.util.Set scala.collection.mutable.Map <=> java.util.Map scala.collection.concurrent.Map <=> java.util.concurrent.ConcurrentMap
Следующие преобразования поддерживаются с помощью asScala и через специально названные методы расширения для преобразования в коллекции Java, как показано:
scala.collection.Iterable <=> java.util.Collection (via asJavaCollection) scala.collection.Iterator <=> java.util.Enumeration (via asJavaEnumeration) scala.collection.mutable.Map <=> java.util.Dictionary (via asJavaDictionary)
Кроме того, следующие односторонние преобразования предоставляются с помощью asJava:
scala.collection.Seq => java.util.List scala.collection.mutable.Seq => java.util.List scala.collection.Set => java.util.Set scala.collection.Map => java.util.Map
Следующее одностороннее преобразование предоставляется с помощью asScala:
java.util.Properties => scala.collection.mutable.Map
Во всех случаях преобразование из исходного типа в целевой тип и обратно вернёт исходный объект. Например:
import scala.collection.JavaConverters._ val source = new scala.collection.mutable.ListBuffer[Int] val target: java.util.List[Int] = source.asJava val other: scala.collection.mutable.Buffer[Int] = target.asScala assert(source eq other)
В качестве альтернативы, методы преобразования имеют описательные названия и могут быть вызваны явно.
scala> val vs = java.util.Arrays.asList("hi", "bye")
vs: java.util.List[String] = [hi, bye]
scala> val ss = asScalaIterator(vs.iterator)
ss: Iterator[String] = non-empty iterator
scala> .toList
res0: List[String] = List(hi, bye)
scala> val ss = asScalaBuffer(vs)
ss: scala.collection.mutable.Buffer[String] = Buffer(hi, bye)
- Since
2.8.1
object LinearSeq extends SeqFactory[LinearSeq]
Этот объект предоставляет набор операций для создания значений. Текущая реализация LinearSeqLinearSeq по умолчанию — это List.
object Map extends MapFactory[Map]
object Searching
Коллекция обёртки, предоставляющей классам последовательностей функциональность поиска.
Пример использования:
import scala.collection.Searching._ val l = List(1, 2, 3, 4, 5) l.search(3) // == Found(2)
object Seq extends SeqFactory[Seq]
Этот объект предоставляет набор операций для создания значений. Текущая реализация по умолчанию для SeqSeq — это List.
объект SeqLike
объект SeqView
Объект, содержащий необходимые неявные определения для работы с SeqView. Обычно клиенты не обращаются к его определениям напрямую.
объект Set extends SetFactory[Set]
Этот объект предоставляет набор операций, необходимых для создания значений . Текущая реализация по умолчанию для SetSet — одна из EmptySet, Set1, Set2, Set3, Set4 в классе immutable.Set для наборов размером до 4 элементов, и immutable.HashSet для наборов большего размера.
объект SortedMap extends SortedMapFactory[SortedMap]
- Since
2.8
объект SortedSet extends SortedSetFactory[SortedSet]
- Since
2.8
объект Traversable extends GenTraversableFactory[Traversable] with TraversableFactory[Traversable]
Этот объект предоставляет набор операций для создания значений Traversable. Текущая реализация по умолчанию для Traversable — List.
объект TraversableOnce
объект TraversableView
Объект, содержащий необходимые неявные определения для работы с TraversableView. Обычно клиенты не обращаются к его определениям напрямую.
© 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/index.html
Содержит базовые трайты и объекты, необходимые для использования и расширения библиотеки коллекций Scala.
Руководство
Подробное руководство по использованию библиотеки коллекций доступно по адресу http://docs.scala-lang.org/overviews/collections/introduction.html. Разработчики, желающие расширить библиотеку коллекций, могут найти описание ее архитектуры по адресу http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html.
Использование коллекций
Удобно рассматривать все коллекции как scala.collection.Traversable или scala.collection.Iterable, так как эти трайты определяют подавляющее большинство операций над коллекцией.
Конечно, коллекции можно рассматривать и более конкретно, при необходимости, и библиотека разработана таким образом, чтобы методы, преобразующие коллекции, возвращали коллекцию того же типа:
scala> val array = Array(1,2,3,4,5,6) array: Array[Int] = Array(1, 2, 3, 4, 5, 6) scala> array map { _.toString } res0: Array[String] = Array(1, 2, 3, 4, 5, 6) scala> val list = List(1,2,3,4,5,6) list: List[Int] = List(1, 2, 3, 4, 5, 6) scala> list map { _.toString } res1: List[String] = List(1, 2, 3, 4, 5, 6)Создание коллекций
Наиболее распространенный способ создания коллекции — использование его компаньон-объекта в качестве фабрики. Три наиболее часто используемые коллекции — scala.collection.Seq, scala.collection.immutable.Set и scala.collection.immutable.Map. Их можно использовать напрямую, как показано ниже, так как их компаньон-объекты доступны как алиасы типов в пакете scala или в
scala.Predef. Новые коллекции создаются так:Также обычно предпочтительнее использовать коллекции из scala.collection.immutable вместо коллекций из scala.collection.mutable; типы, алиасированные в объекте
scala.Predef, являются неизменяемыми версиями.Также обратите внимание, что библиотека коллекций была тщательно разработана для включения нескольких реализаций каждого из трёх основных типов коллекций. Эти реализации обладают специфическими характеристиками производительности, которые описаны в руководстве.
Конкретные параллельные коллекции также имеют специфические характеристики производительности, описанные в руководстве по параллельным коллекциям
Преобразование между коллекциями Java и Scala
Объект scala.collection.JavaConverters предоставляет набор декораторов, позволяющих преобразовывать между коллекциями Scala и Java, используя методы
asScalaиasJava.