java - Why trimToSize/ensureCapacity methods provide 'public' level access? -


any user access java.util.arraylist facility, has obey usage contract provided in java.util.list.

but 1 can break usage contract , access methods trimtosize

public void trimtosize() { ... } 

and ensurecapacity

public void ensurecapacity(int mincapacity) { ...} 

because these 2 methods neither overridden java.util.abstractlist nor implemented java.util.list.

so, why these 2 methods provide public level access , break abstraction provided java.util.list?

there cases efficiency may cost more data abstraction. ensurecapacity may used preallocate internal buffer once when add known number of elements. trimtosize may used when not going add more elements free wasted memory. both methods non-applicable other list implementations, added arraylist only.

note list created , populated 1 method knows implementation used. not break abstraction. example, consider such code:

public list<string> createlist() {     arraylist<string> list = new arraylist<>();     // populate list     list.trimtosize();     return list; } 

this way can save memory , still return list interace.


Comments

Popular posts from this blog

c - Bitwise operation with (signed) enum value -

xslt - Unnest parent nodes by child node -

YouTubePlayerFragment cannot be cast to android.support.v4.app.Fragment -