Chapter 10.1.7 Generics and Wrapper Classes | Introduction to Programming Using Java
10.1.7 Generics and Wrapper Classes
As noted above, Java’s generic programming does not apply to the primitive types, since generic data structures can only hold objects, while values of primitive type are not objects. However, the “wrapper classes” that were introduced in Subsection 5.3.2 make it possible to get around this restriction to a great extent.
Recall that each primitive type has an associated wrapper class: class Integer for type int, class Boolean for type boolean, class Character for type char, and so on.
An object of type Integer contains a value of type int. The object serves as a “wrapper” for the primitive type value, which allows it to be used in contexts where objects are required, such as in generic data structures. For example, a list of Integers can be stored in a variable of type ArrayList<Integer>, and interfaces such as Collection<Integer> and Set<Integer> are defined.
Furthermore, class Integer defines equals(), compareTo(), and toString() methods that do what you would expect (that is, that compare and write out the corresponding primitive type values in the usual way). Similar remarks apply for all the wrapper classes.
Recall also that Java does automatic conversions between a primitive type and the corresponding wrapper type. (These conversions, which are called autoboxing and unboxing, were also introduced in Subsection 5.3.2.) This means that once you have created a generic data structure to hold objects belonging to one of the wrapper classes, you can use the data structure pretty much as if it actually contained primitive type values. For example, if numbers is a variable of type Collection<Integer>, it is legal to call numbers.add(17) or numbers.remove(42).
You can’t literally add the primitive type value 17 to numbers, but Java will automatically convert the 17 to the corresponding wrapper object, new Integer(17), and the wrapper object will be added to the collection. (The creation of the object does add some time and memory overhead to the operation, and you should keep that in mind in situations where efficiency is important. An array of int is more efficient than an ArrayList<Integer>.)
10.2 Lists and Sets
In the previous section, we looked at the general properties of collection classes in Java. In this section, we look at some specific collection classes and how to use them. These classes can be divided into two categories: lists and sets. A list consists of a sequence of items arranged in a linear order. A list has a definite order, but is not necessarily sorted into ascending order. A set is a collection that has no duplicate entries. The elements of a set might or might not be arranged into some definite order.
SEE MORE:
- Chapter 10.2.2 Sorting | Introduction to Programming Using Java
- Chapter 10.2.4 EnumSet | Introduction to Programming Using Java
- Chapter 10.3 Maps | Introduction to Programming Using Java
- Chapter 11.2.1 Reading and Writing Files | Introduction to Program ming Using Java
- Chapter 11.2.2 Files and Directories | Introduction to Programming Using Java
- Chapter 11.3.1 Copying a File | Introduc’tion to Program’ming Using Java
- Chapter 11.3.2 Persistent Data | Introduction to Programming Using Java
- Chapter 11.3.3 Files in GUI Programs | Introduction to Program’ming Using Java
- Chapter 11.4.2 TCP/IP and Client/Server | Introduction to Program ming Using Java
- Chapter 12 Advanced GUI Programming | Images and Resources | Introduction to Program ming Using Java