You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@avro.apache.org by Nick Palmer <pa...@cs.vu.nl> on 2011/06/22 15:52:47 UTC

GenericData.Array

For an application I am working on I need GenericData.Array.add(int i, T o) which is currently not implemented.

For the moment I have implemented this method in my own tree. However, I am wondering why GenericData.Array is extending AbstractList instead of extending ArrayList since the methods which are implemented seem to be reinventing that wheel.

If extending ArrayList is a possibility I would be happy to submit a patch which does that instead. Otherwise, shall I open a ticket with my existing patch?

Thanks,
~ Nick


Re: GenericData.Array

Posted by Doug Cutting <cu...@apache.org>.
GenericArray permits reuse of elements.  When one repeatedly reads into
an instance in a loop with, e.g., DatumReader#read(), no new element
instances need be constructed.  This is because GenericArray does not
clear its elements as they are removed.  ArrayList always clears
elements, and this behaviour cannot be overridden.

Note that, when writing data, any List implementation may be used.  If
GenericArray is used then reuse is possible, but ArrayList may be used.

Doug

On 06/22/2011 03:52 PM, Nick Palmer wrote:
> For an application I am working on I need GenericData.Array.add(int i, T o) which is currently not implemented.
> 
> For the moment I have implemented this method in my own tree. However, I am wondering why GenericData.Array is extending AbstractList instead of extending ArrayList since the methods which are implemented seem to be reinventing that wheel.
> 
> If extending ArrayList is a possibility I would be happy to submit a patch which does that instead. Otherwise, shall I open a ticket with my existing patch?
> 
> Thanks,
> ~ Nick
> 

Re: GenericData.Array

Posted by Nick Palmer <pa...@cs.vu.nl>.
Interesting optimization. Thanks. I have submitted a patch for this as AVRO-841.

~ Nick

On Jun 23, 2011, at 7:20 , Doug Cutting wrote:

> GenericArray permits reuse of elements.  When one repeatedly reads into
> an instance in a loop with, e.g., DatumReader#read(), no new element
> instances need be constructed.  This is because GenericArray does not
> clear its elements as they are removed.  ArrayList always clears
> elements, and this behaviour cannot be overridden.
> 
> Note that, when writing data, any List implementation may be used.  If
> GenericArray is used then reuse is possible, but ArrayList may be used.
> 
> Doug
> 
> On 06/22/2011 03:52 PM, Nick Palmer wrote:
>> For an application I am working on I need GenericData.Array.add(int i, T o) which is currently not implemented.
>> 
>> For the moment I have implemented this method in my own tree. However, I am wondering why GenericData.Array is extending AbstractList instead of extending ArrayList since the methods which are implemented seem to be reinventing that wheel.
>> 
>> If extending ArrayList is a possibility I would be happy to submit a patch which does that instead. Otherwise, shall I open a ticket with my existing patch?
>> 
>> Thanks,
>> ~ Nick
>>