<< Chapter < Page | Chapter >> Page > |
Collection data
Joe Bill Tom JOE BILL TOM
As you can see, this is the same order in which the names were added to the collection by the fillIt method in Listing 4 .
The code in Listing 6 is new to this module. This code calls the toArray method on the Vector object to extract the contentsof the collection and store the elements in an array object of type Object .
Listing 6 . Call the toArray method. |
---|
array = ref.toArray(); |
(Recall that the variable named array was declared as a reference to an array object of type Object in Listing 1 .)
According to the documentation for the Vector class, this version of the toArray method:
"Returns an array containing all of the elements in this Vector in the correct order."
The documentation for the toArray method of the Collection interface is a little more verbose, reading partially as follows:
"Returns an array containing all of the elements in this collection. If the collection makes any guarantees as to what order its elements arereturned by its iterator, this method must return the elements in the same order.
By default, the iterator for a Vector returns its elements in ascending index order. Therefore, the toArray method for a Vector object must return the elements in the same order.
Also, according to Oracle:
"The returned array will be "safe" in that no references to it are maintained by this collection. ... The caller is thus free to modify thereturned array."
In the code in Listing 6 above, the returned reference to an array object is assigned to a reference variable that previously contained null. Following theexecution of the toArray method, that reference variable refers to an array object of type Object containing the same elements as the Vector collection, in ascending index order.
(Regarding the concept of a "safe" array, it is easy to demonstrate that the elements in the array refer to the same objects referred to by the elementsin the Vector. Thus, using the references stored in the array to modify the objects to which they refer also modifies the objects referred to by theelements stored in the Vector. In other words, the elements in the array are copies of the elements in the Vector. The elements in the array refer to theoriginal objects, and do not refer to copies (or clones) of those objects. As usual when dealing with multiple references to objects, care should be taken to avoidinadvertently corrupting those objects.)
The code in Listing 7 passes the array object's reference to a method named display that displays the contents of the array in ascending index order.
Listing 7 . Display the contents of the array. |
---|
System.out.println("Raw array data");
display(array); |
The output produced by the code in Listing 7 is as shown below:
Raw array data
Joe Bill Tom JOE BILL TOM
As you can see, this is the same data, in the same order, as the contents of the collection displayed earlier.
(The method named display is a simple utility method that I won't discuss here because of its simplicity. You canview the display method in its entirety in Listing 1 .)
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?