Presentation is loading. Please wait.

Presentation is loading. Please wait.

Generics and Collections. Introduction Generics New feature of J2SE 5.0 Provide compile-time type safety Catch invalid types at compile time Generic methods.

Similar presentations


Presentation on theme: "Generics and Collections. Introduction Generics New feature of J2SE 5.0 Provide compile-time type safety Catch invalid types at compile time Generic methods."— Presentation transcript:

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


Download ppt "Generics and Collections. Introduction Generics New feature of J2SE 5.0 Provide compile-time type safety Catch invalid types at compile time Generic methods."

Similar presentations


Ads by Google