Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Programming: Guided Learning with Early Objects

Similar presentations


Presentation on theme: "Java Programming: Guided Learning with Early Objects"— Presentation transcript:

1 Java Programming: Guided Learning with Early Objects
Chapter 12 Generics, Dynamic Representations, and Collections

2 Objectives Learn about generic methods and classes
Learn about the interface Comparable and how to implement it Learn about the Java class LinkedList and how to use various operations of this class Java Programming: Guided Learning with Early Objects

3 Objectives (continued)
Explore iterators and how they work Learn about the interface Collection and its framework Learn about various collection algorithms Java Programming: Guided Learning with Early Objects

4 Generic Methods Generic methods: write one method definition rather than multiple definitions Defined using type parameters Type parameter section precedes return type of the method Type parameters separated by commas Enclosed in angle brackets Also called type variables Java Programming: Guided Learning with Early Objects

5 Generic Methods (continued)
Type parameters used for: Declaring return type of the method Declaring formal parameters Declaring local variables Type parameters represent only reference parameters Not primitives modifiers <T> returnType methodName (formal parameter list) { // Method body } Java Programming: Guided Learning with Early Objects

6 Generic Classes Type parameters are enclosed in angle brackets
Placed after the name of the class Type parameter declares variables and generic methods within the class modifiers className<T> modifiers { //class members } Also known as parametric classes Java Programming: Guided Learning with Early Objects

7 Generic Classes (continued)
Reference variables declared using type parameter T within definition of the class Cannot instantiate objects using type parameter Java Programming: Guided Learning with Early Objects

8 The interface Comparable
One method: compareTo Used to require a class to provide definition for the method compareTo Allows values of two objects to be compared Make the class implement interface Comparable Java Programming: Guided Learning with Early Objects

9 Generic Methods and Bounded Type Parameters
Recall generic method print Type parameter T refers to any built-in Java class No restriction on type parameter T Type parameters restricted, for example, to classes that define compareTo Example: public static <T extends Comparable<T>> T larger( T x, T y ) Java Programming: Guided Learning with Early Objects

10 Generic Methods and Bounded Type Parameters (continued)
Consider: <T extends Comparable<T>> T refers to any class that implements Comparable Comparable is the upper bound of the type parameter T By default, Object always an upper bound Keyword extends used when type parameter declaration bounds a parameter Java Programming: Guided Learning with Early Objects

11 Generic Search and Sort Algorithms (Optional)
Sort algorithms from earlier chapters work only on int arrays Designing generic search and sort algorithms Generic selection sort Place definition of selection algorithm in a class Java Programming: Guided Learning with Early Objects

12 Collections Vector known as a collection class
class Vector implements array-based lists class LinkedList implements a linked list Java Programming: Guided Learning with Early Objects

13 Linked Lists and the class LinkedList
Array also called a sequential list Operations on sequential lists: Insertion Deletion Searching Searching unsorted data is time-consuming Insertion and deletion is time-consuming on sorted lists Array size is fixed Java Programming: Guided Learning with Early Objects

14 Linked Lists Linked list: collection of components called nodes
Each node contains address of next node Two parts: One stores relevant information One stores address Address of first node is called head or first class Node defines the node of a linked list Two instance variables: info and link Java Programming: Guided Learning with Early Objects

15 Figure 12-3 Linked list and values of the links
Java Programming: Guided Learning with Early Objects

16 Linked Lists: Some Properties
Keep a reference variable current to point to address of the current node in the list Useful for traversing the list Java Programming: Guided Learning with Early Objects

17 Figure 12-4 Linked list with four nodes
Java Programming: Guided Learning with Early Objects

18 Table 12-1 Values of head and Some of the Nodes of the Linked List in Figure 12-4
Java Programming: Guided Learning with Early Objects

19 Figure 12-5 Linked list after the statement current = current
Figure 12-5 Linked list after the statement current = current.link; executes Java Programming: Guided Learning with Early Objects

20 Table 12-2 Values of current and Some of the Nodes of the Linked List in Figure 12-5
Java Programming: Guided Learning with Early Objects

21 Insertion Create a new node Store data in instance variable info
Set instance variable link to point to following node Set previous node variable link to point to new node Java Programming: Guided Learning with Early Objects

22 Figure 12-6 Linked list before item insertion
Java Programming: Guided Learning with Early Objects

23 Figure 12-7 Create newNode and store 50 in it
Java Programming: Guided Learning with Early Objects

24 Figure 12-8 List after the statement newNode.link = p.link; executes
Java Programming: Guided Learning with Early Objects

25 Figure 12-9 List after the statement p.link = newNode; executes
Java Programming: Guided Learning with Early Objects

26 Deletion Set link variable of previous node to link to next node in list Bypass the node to be deleted Garbage collector runs if no reference variable points to the deleted node Memory reclaimed by system Java Programming: Guided Learning with Early Objects

27 Figure 12-10 Node to be deleted is with info 34
Java Programming: Guided Learning with Early Objects

28 Figure 12-11 List after the statement p.link = p.link.link; executes
Java Programming: Guided Learning with Early Objects

29 Doubly Linked Lists Every node has a next pointer and a previous pointer Can be traversed efficiently in either direction Can traverse from first or last node Inserting a node requires setting pointers in both directions Deleting a node requires bypassing a node in both directions Java Programming: Guided Learning with Early Objects

30 Figure 12-12 Doubly linked list
Java Programming: Guided Learning with Early Objects

31 The class LinkedList class LinkedList implemented as a doubly linked list Every element points to immediate predecessor and successor Two constructors: Collection<? extends E> Type parameter ? represents unknown type ? called wildcard Type E an upper bound of the wildcard Java Programming: Guided Learning with Early Objects

32 Iterators Process elements of a collection one by one Use an iterator
Could use foreach loop Use an iterator Processes elements in collection one after the other interface ListIterator implements interface Iterator interface Iterator has only three methods Java Programming: Guided Learning with Early Objects

33 Table 12-4 Methods of the interface Iterator
Java Programming: Guided Learning with Early Objects

34 Table 12-5 The interface ListIterator and its Methods
Java Programming: Guided Learning with Early Objects

35 Table 12-5 The interface ListIterator and its Methods (continued)
Java Programming: Guided Learning with Early Objects

36 Iterators (continued)
Typically, iterator moves in only one direction Starts at first element, moves to last class LinkedList implemented as doubly linked lists Iterator should move in both directions interface ListInterface extends interface Iterator Has methods to move in both directions Can also be used for insertion and deletion Java Programming: Guided Learning with Early Objects

37 Collections and Collection Algorithms
Collection: data structure that holds references to other objects Examples: vector, array Collection class: a class whose objects are collections Example: class Vector Several interfaces and classes implement collections systematically Hierarchical structure Java Programming: Guided Learning with Early Objects

38 Figure 12-13 Some Java Collection classes and the inheritance hierarchy
Java Programming: Guided Learning with Early Objects

39 Table 12-6 Methods of the Collections class
Java Programming: Guided Learning with Early Objects

40 The Method addAll Method addAll adds the elements of a collection into another collection List to be added is a variable length parameter Elements specified individually or as an array Throws: UnsupportedOperationException, NullPointerException, IllegalArgumentException Java Programming: Guided Learning with Early Objects

41 The Methods binarySearch, sort, and reverseOrder
binarySearch: search the list, specified as parameter for object Efficiently searches a list for a given element Requires a list to be sorted List can be sorted in ascending or descending order using reverseOrder sort: type parameter T bounded by interface Comparable Java Programming: Guided Learning with Early Objects

42 Table 12-7 Methods of the interface Comparator
Java Programming: Guided Learning with Early Objects

43 The Method copy Copies elements of one collection into another collection object After copy operation, index of each copied element is identical in source and destination Copies only references of the objects Objects in destination list point to same objects as source Objects in source list are mutable Changing value of object by using source changes value in destination Java Programming: Guided Learning with Early Objects

44 The Methods max and min Methods max and min determine maximum and minimum elements All elements in collection must be mutually comparable by the comparator Throws exceptions: ClassCastException NoSuchElementException Java Programming: Guided Learning with Early Objects

45 The Methods fill and frequency
Method fill replaces all elements of a given list with given element Type parameter T specifies type of list elements as well as type of replacement element Method frequency finds the number of times a specific object appears in a collection If collection is null, throws NullPointerException Java Programming: Guided Learning with Early Objects

46 The Method replaceAll Replaces all occurrences of a given element with another Type parameter T specifies type of list elements Returns true if list contains one or more elements equal to replacement object If list or list iterator does not support set method, throws exception Java Programming: Guided Learning with Early Objects

47 The Methods shuffle and swap
Method shuffle randomly shuffles elements of a list Two forms: with and without random seed All permutations occur with approximately equal likelihood Method swap swaps elements of list Java Programming: Guided Learning with Early Objects

48 Summary Generic methods are defined using type parameters
Every generic method has a type parameter section preceding the return type of the method Type parameters separated by commas Enclosed in angle brackets Type parameters specify generic type names Within generic method, declare reference variables using type parameter T Java Programming: Guided Learning with Early Objects

49 Summary (continued) Type parameter may be bounded or unbounded
Cannot instantiate objects using type parameter class LinkedList implemented as a doubly linked list Contained in package java.util The foreach loop iterates over LinkedList Iterator iterates over elements of a collection Java Programming: Guided Learning with Early Objects

50 Summary (continued) Collection is a data structure that holds references to objects Collection class is a class whose objects are collections interface Collection is the superclass of all Java collection classes Generic algorithms designed as static methods of class Collections Java Programming: Guided Learning with Early Objects


Download ppt "Java Programming: Guided Learning with Early Objects"

Similar presentations


Ads by Google