Download presentation
Presentation is loading. Please wait.
Published byDerek Moore Modified over 9 years ago
1
Generics and Collections
2
Introduction Generics New feature of J2SE 5.0 Provide compile-time type safety Catch invalid types at compile time Generic methods A single method declaration A set of related methods Generic classes A single class declaration A set of related clases
3
Motivation for Generic Methods Overloaded methods Perform similar operations on different types of data Overloaded printArray methods Integer array Double array Character array Only reference types can be used with generic methods and classes
4
Motivation for Generic Methods (Cont.) Study each printArray method Array element type appears in two location Method header for statement Combine three printArray methods into one Replace the element types with a generic name E Declare one printArray method Display the string representation of the elements of any array
5
Generic Methods: Implementation and Compile-Time Translation Generic method declaration Type parameter section Delimited by angle brackets ( ) Precede the method’s return type Contain one or more type parameters Also called formal type paramters
6
Generic Methods: Implementation and Compile-Time Translation Type parameter (Also known as type variable) An identifier that specifies a generic type name Used to declare return type, parameter types and local variable types Act as placeholders for the types of the argument passed to the generic method Actual type arguments Can be declared only once but can appear more than once public static void printTwoArrays( E[] array1, E[] array2 )
7
Generic Methods: Implementation and Compile-Time Translation (Cont.) Compile-time translation Erasure Remove type parameter section Replace type parameters with actual types Default type is Object
8
Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type Application of Fig. 18.5 Generic method Use Type parameters in the return type and parameter list Generic interface Specify, with a single interface declaration, a set of related types E.g., Comparable Method integer1.compareTo( integer2 ) Compare two objects of the same class Return 0 if two objects are equal Return -1 if integer1 is less than integer2 Return 1 if integer1 is greater than integer2
9
Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type (Cont.) Upper bound of type parameter Default is Object Always use keyword extends E.g., T extends Comparable When compiler translates generic method to Java bytecode Replaces type parameter with its upper bound Insert explicit cast operation e.g., line 23 of Fig. 18.5 I preceded by an Integer cast (Integer) maximum( 3, 4, 5 )
10
Overloading Generic Method Generic method may be overloaded By another generic method Same method name but different method parameters By non-generic methods Same method name and number of parameters When compiler encounters a method call Search for most precise matching method first Exact method name and argument types Then search for inexact but applicable matching method
11
Generic Classes Generic classes Use a simple, concise notation to indicate the actual type(s) At compilation time, Java compiler ensures the type safety uses the erasure technique to enable client code to interact with the generic class Parameterized classes Also called parameterized types E.g., Stack
12
Generic Classes (Cont.) Generic class declaration Looks like a non-generic class declaration Except class name is followed by a type parameter section The –Xlint:unchecked option Compiler cannot 100% ensure type safety
13
Generic Classes (Cont.) Generic class at compilation time Compiler performs erasure on class’s type parameters Compiler replaces type parameters with their upper bound Generic class test program at compilation time Compiler performs type checking Compiler inserts cast operations as necessary
14
Generic Classes (Cont.) Creating generic methods to test class Stack Method testPush Perform same tasks as testPushDouble and testPushInteger Method testPop Perform same tasks as testPopDouble and testPopInteger
15
Wildcards in Methods That Accept Type Parameters Data structure ArrayList Dynamically resizable, array-like data structure Method add Method toString
16
Wildcards in Methods That Accept Type Parameters Motivation for using wildcards Implement a generic method sum Total the numbers in a collection Receive a parameter of type ArrayList Use method doubleValue of class Number to obtain the Number ’s underlying primitive value as a double value
17
Wildcards in Methods That Accept Type Parameters (Cont.) Implementing method sum with a wildcard type argument in its parameter Number is the superclass of Integer ArrayList is not a supertype of ArrayList Cannot pass ArrayList to method sum
18
Generics and Inheritance: Notes Inheritance in generics Generic class can be derived from non-generic class e.g., class Object is superclass of every generic class Generic class can be derived from another generic class e.g., Stack is a subclass of Vector Non-generic class can be derived from generic class e.g., Properties is a subclass of Hashtable Generic method in subclass can override generic method in superclass If both methods have the same signature
19
Collections
20
Introduction Java collections framework Contain prepackaged data structures, interfaces, algorithms Use generics Use existing data structures Example of code reuse Provides reusable components
21
Collections Overview Collection Data structure (object) that can hold references to other objects Collections framework Interfaces declare operations for various collection types Provide high-performance, high-quality implementations of common data structures Enable software reuse
22
Some collection framework interfaces.
23
Class Arrays Provides static methods for manipulating arrays Provides “high-level” methods Method binarySearch for searching sorted arrays Method equals for comparing arrays Method fill for placing values into arrays Method sort for sorting arrays
24
Interface Collection and Class Collections Interface Collection Root interface in the collection hierarchy Interfaces Set, Queue, List extend interface Collection Set – collection does not contain duplicates Queue – collection represents a waiting line List – ordered collection can contain duplicate elements Contains bulk operations Adding, clearing, comparing and retaining objects Provide method to return an Iterator object Walk through collection and remove elements from collection
25
Interface Collection and Class Collections (Cont.) Class Collections Provides static methods that manipulate collections Implement algorithms for searching, sorting and so on Collections can be manipulated polymorphically Synchronized collection Unmodifiable collection
26
Software Engineering Observation The collections framework algorithms are polymorphic. That is, each algorithm can operate on objects that implement specific interfaces, regardless of the underlying implementations.
27
Lists List Ordered Collection that can contain duplicate elements Sometimes called a sequence Implemented via interface List ArrayList LinkedList Vector
28
Performance Tip ArrayLists behave like Vectors without synchronization and therefore execute faster than Vectors because ArrayLists do not have the overhead of thread synchronization.
29
Software Engineering Observation LinkedLists can be used to create stacks, queues, trees and deques (double-ended queues, pronounced “decks”). The collections framework provides implementations of some of these data structures.
30
ArrayList and Iterator ArrayList example Demonstrate Collection interface capabilities Place two String arrays in ArrayList s Use Iterator to remove elements in ArrayList
31
LinkedList LinkedList example Add elements of one List to the other Convert String s to uppercase Delete a range of elements
32
Linkedlist (Cont.) static method asList of class Arrays View an array as a List collection Allow programmer to manipulate the array as if it were a list Any modification made through the List view change the array Any modification made to the array change the List view Only operation permitted on the view returned by asList is set
33
Vector Class Vector Array-like data structures that can resize themselves dynamically Contains a capacity Grows by capacity increment if it requires additional space
34
Performance Tip Inserting an element into a Vector whose current size is less than its capacity is a relatively fast operation. Inserting an element into a Vector that needs to grow larger to accommodate the new element is a relatively slow operation.
35
Collections Algorithms Collections framework provides set of algorithms Implemented as static methods List algorithms sort binarySearch reverse shuffle fill copy
36
Collections Algorithms Collection algorithms min max addAll frequency disjoint
37
Collections algorithms.
38
Algorithm sort sort Sorts List elements Order is determined by natural order of elements’ type List elements must implement the Comparable interface Or, pass a Comparator to method sort Sorting in ascending order Collections method sort Sorting in descending order Collections static method reverseOrder Sorting with a Comparator Create a custom Comparator class
39
Algorithm binarySearch binarySearch Locates object in List Returns index of object in List if object exists Returns negative value if Object does not exist Calculate insertion point Make the insertion point sign negative Subtract 1 from insertion point
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.