Conditions: do not modifiy the original lists; JDK only, no external libraries. Bonus points for a one-liner or a JDK 1.3 version.
Is there a simpler way than:
List<String> newList = new ArrayList<String>();
newList.addAll(listOne);
newList.addAll(listTwo);
The proposed solution is for three lists though it can be applied for two lists as well. In Java 8 we can make use of Stream.of or Stream.concat as:
Stream.concat
takes two streams as input and creates a lazily concatenated stream whose elements are all the elements of the first stream followed by all the elements of the second stream. As we have three lists we have used this method (Stream.concat
) two times.We can also write a utility class with a method that takes any number of lists (using varargs) and returns a concatenated list as:
Then we can make use of this method as:
In kotlin:
Or simpler:
Not simpler, but without resizing overhead:
another one liner solution using
Java8
stream, sinceflatMap
solution is already posted, here is a solution withoutflatMap
or
code
output