Ответ 1
ArrayBuilder
- это Builder
, и строители предназначены для использования для создания других коллекций путем добавления к ним элементов. Строители обычно не предназначены для непосредственного использования в клиентском коде.
ArrayBuffer
- это Buffer
и Seq
- буферы - это последовательности, к которым вы можете эффективно добавлять элементы. Последовательности поставляются с большим количеством вспомогательных операций.
Вероятно, вам понадобится ArrayBuffer
. Он предназначен для использования в качестве альтернативы ArrayList
в Java. Класс ArrayBuffer
представляет собой полнофункциональные коллекции последовательностей со всеми операциями объемных данных, такими как foreach
, map
, filter
, zip
и друзьями, в отличие от ArrayBuilder
, который оснащен только +=
до добавьте элементы и result
, чтобы получить массив в конце.
Одно место, где вы можете предпочесть ArrayBuilder
, - это когда вы создаете экземпляр для примитивного типа, например Int
, и вам небезразлична производительность. В этом случае варианты ArrayBuilder
специализированы для разных примитивных типов и содержат базовый массив правильного примитивного типа, тогда как ArrayBuffer
всегда содержит массив объектов под ним - каждый примитив, который вы добавляете к нему, подвергается боксу.
Чтобы создать экземпляр буфера массива:
new ArrayBuffer[Int] // gives you an array buffer that will hold boxed integers
Чтобы создать экземпляр конструктора массива:
new ArrayBuilder.ofInt // gives you a manually specialized array builder that will hold real primitives