Skip to content

Commit

Permalink
Optimized creation of GenericData.Array
Browse files Browse the repository at this point in the history
  • Loading branch information
sksamuel committed Apr 15, 2024
1 parent 959f034 commit 568f69f
Showing 1 changed file with 3 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class GenericArrayArrayEncoder<T>(private val encoder: Encoder<T>) : Encoder<Arr
override fun encode(schema: Schema, value: Array<T>): Any {
require(schema.type == Schema.Type.ARRAY)
val elements = value.map { encoder.encode(schema.elementType, it) }
return GenericData.Array<T>(elements.size, schema).also { it.addAll(elements as Collection<T>) }
return GenericData.Array(schema, elements)
}
}

Expand All @@ -22,7 +22,7 @@ class GenericArrayListEncoder<T>(private val encoder: Encoder<T>) : Encoder<List
override fun encode(schema: Schema, value: List<T>): Any {
require(schema.type == Schema.Type.ARRAY)
val elements = value.map { encoder.encode(schema.elementType, it) }
return GenericData.Array<T>(elements.size, schema).also { it.addAll(elements as Collection<T>) }
return GenericData.Array(schema, elements)
}
}

Expand All @@ -33,9 +33,7 @@ class GenericArraySetEncoder<T>(private val encoder: Encoder<T>) : Encoder<Set<T
override fun encode(schema: Schema, value: Set<T>): GenericArray<Any> {
require(schema.type == Schema.Type.ARRAY)
val elements = value.map { encoder.encode(schema.elementType, it) }
val array = GenericData.get().newArray(null, elements.size, schema) as GenericArray<Any>
array.addAll(elements)
return array
return GenericData.Array(schema, elements)
}
}

Expand Down

0 comments on commit 568f69f

Please sign in to comment.