Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Utility method for wrapping an object in a collection

java.util.Collections.singleton(object) will give you an immutable Set. singletonList is also available.

Less efficiently java.util.Arrays.asList(object) will give you a mutable (can use list.set(0, x);), but non-structurally changeable (can't add or remove) List. It is a bit more expensive as there is an extra array that is created client-side.


Here are some efficient ways to wrap Java object(s) in List, as of Java 8.

Collections.singletonList: Single item, immutable, since 1.3.
Collections.singletonList( object )
High performance backed by internal class.

Collections.nCopies: One object, zero to many items, immutable, since 1.2.
Collections.nCopies( number_of_copy, object )
High performance backed by internal class. All items point to same object.

Array.asList: Any number of objects, size immutable (individual elements mutable), since 1.2.
Arrays.asList( object1, object2, object3 )
Backed by internal class. Items are converted to array at compile time and this array directly backs the List.

new ArrayList(Collection): Any number of objects, mutable, since 1.2
new ArrayList<>( Arrays.asList( object1, object2, object3 ) )
The ArrayList is created with an array clone and an array copy, and so does not use any loops.


Immutable list in guava

public static <E> ImmutableList<E> of(E element)

Returns an immutable list containing a single element. This list behaves and performs comparably to Collections.singleton(T), but will not accept a null element. It is preferable mainly for consistency and maintainability of your code.


Don't be afraid of writing something yourself. As far as I know it doesn't exist. I think a reason for this is that the utility method decides which implementation of Collection it uses. In your case you chose for ArrayList, but there are a whole bunch of other collections.


java.util.Collections.singletonList() or singleton(). Note though that the result is immutable.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!