The call returns the array
That call: LinkedList.toArray() returns the array you provided as an argument, IF it's big enough to hold all the items in the LinkedList, a new array if the passed-in array is not big enough. It might be my sloppy coding style that has confused matters, but it would work.
Charlie's problem is that he initialised the array (line 8) before he filled the list. He initialised the list in line 7, so the call to LinkedList.size() in the line after would return 0.
When you print the array, Charlie, you're getting the 'right' output - for
Java! The left-square bracket means 'array', the L means something which I can't remember, but which might be 'reference type' (as opposed to built-in like 'int' or 'char' - see the Language Specification, I think...), the java.lang.String is the class of the reference type, and the @hex is either a 'memory' (or whatever passes for memory in a VM) or a hashcode for the object. There's some really essential Java info contained in that output! When you get your head around exactly what is being printed by Object.toString(), you're really on your way to fully understanding Java. There is a method in java.util.Arrays - deepToString() - which might give you something more like what you're expecting.
What your output is telling me is that you have initialised 5 references to String arrays. The code that follows, where you use 'toArray' with a zero-length array-of-arrays, creates a NEW array-of-arrays (because it can't fit the list in a zero-length array), and returns it on the unassigned Left-Hand-Side (LHS), where it just disappears! You could either try assigning it to your 'addresses' array-of-arrays at that point, or move the creation of the empty array to after the loop, where the final size of your LinkedList is known.