Chapter 20 Lists Stacks Queues and Priority Queues

  • Slides: 24
Download presentation
Chapter 20 Lists, Stacks, Queues, and Priority Queues Liang, Introduction to Java Programming, Tenth

Chapter 20 Lists, Stacks, Queues, and Priority Queues Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1

Java Collection Framework supports two types of containers: - collections: for storing a collection

Java Collection Framework supports two types of containers: - collections: for storing a collection of elements - map: for storing key/value pairs Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 2

Collection The collection interface defines common operations for lists, stacks, queues, priority queues and

Collection The collection interface defines common operations for lists, stacks, queues, priority queues and sets. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 3

Collections F Sets: store a group of non-duplicate elements F Lists: store an ordered

Collections F Sets: store a group of non-duplicate elements F Lists: store an ordered collection of elements F Stacks: store objects that are processed in LIFO fashion F Queue: store objects that are processed in FIFO fashion F Priority Queue: store objects that are processed in the order of their priorities Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 4

The Collection interface F Provide basic operations for adding and removing elements in a

The Collection interface F Provide basic operations for adding and removing elements in a collection F F F add/remoew: add/remove one element to the collection add. All/remove. All: add/remove all the elements in the specified collection to this collection retain. All: retains the elements in this collection that are also present in the specified collection The return value for all these methods is boolean. Value is true if the collection is changed Clear(): remove all the elements from the collection Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 5

The Collection interface F Provide various query operation F size: return the number of

The Collection interface F Provide various query operation F size: return the number of elements in the collection F contains: check whether the collection contains specific element F contains. All: check whether the collection contains all the elements in the specified collection F is. Empty: return true if the collection is empty F to. Array: return an array representation for the collection Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 6

Iterators Each collection is Iterable. You can obtain its iterator object to traverse all

Iterators Each collection is Iterable. You can obtain its iterator object to traverse all the elements in the collection Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 7

The List Interface A list stores elements in a sequential order, and allows the

The List Interface A list stores elements in a sequential order, and allows the user to specify where the element is stored. The user can access the elements by index. F F F add/remove (index, element) add. All(index, collection) indexof/last. Indexof(element) Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 8

Array. List and Linked. List The Array. List class and the Linked. List class

Array. List and Linked. List The Array. List class and the Linked. List class are concrete implementations of the List interface. Which of the two classes you use depends on your specific needs. If you need to support random access through an index without inserting or removing elements from any place other than the end, Array. List offers the most efficient collection. If, however, your application requires the insertion or deletion of elements from any place in the list, you should choose Linked. List. A list can grow or shrink dynamically. An array is fixed once it is created. If your application does not require insertion or deletion of elements, the most efficient data structure is the array. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 9

Example: Using Array. List and Linked. List This example creates an array list filled

Example: Using Array. List and Linked. List This example creates an array list filled with numbers, and inserts new elements into the specified location in the list. The example also creates a linked list from the array list, inserts and removes the elements from the list. Finally, the example traverses the list forward and backward. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 10

The Collections Class The Collections class contains various static methods for operating on collections

The Collections Class The Collections class contains various static methods for operating on collections and maps, for creating synchronized collection classes, and for creating readonly collection classes. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 11

The Collections Class UML Diagram Liang, Introduction to Java Programming, Tenth Edition, (c) 2013

The Collections Class UML Diagram Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 12

Case Study: Multiple Bouncing Balls Multiple. Bounce. Ball Liang, Introduction to Java Programming, Tenth

Case Study: Multiple Bouncing Balls Multiple. Bounce. Ball Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. Run 13

The Vector and Stack Classes The Java Collections Framework was introduced with Java 2.

The Vector and Stack Classes The Java Collections Framework was introduced with Java 2. Several data structures were supported prior to Java 2. Among them are the Vector class and the Stack class. These classes were redesigned to fit into the Java Collections Framework, but their old-style methods are retained for compatibility. This section introduces the Vector class and the Stack class. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 14

The Vector Class In Java 2, Vector is the same as Array. List, except

The Vector Class In Java 2, Vector is the same as Array. List, except that Vector contains the synchronized methods for accessing and modifying the vector. None of the new collection data structures introduced so far are synchronized. If synchronization is required, you can use the synchronized versions of the collection classes. These classes are introduced later in the section, “The Collections Class. ” Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 15

The Vector Class, cont. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson

The Vector Class, cont. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 16

The Stack Class The Stack class represents a last-in-firstout stack of objects. The elements

The Stack Class The Stack class represents a last-in-firstout stack of objects. The elements are accessed only from the top of the stack. You can retrieve, insert, or remove an element from the top of the stack. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 17

Queues and Priority Queues A queue is a first-in/first-out data structure. Elements are appended

Queues and Priority Queues A queue is a first-in/first-out data structure. Elements are appended to the end of the queue and are removed from the beginning of the queue. In a priority queue, elements are assigned priorities. When accessing elements, the element with the highest priority is removed first. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 18

The Queue Interface Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education,

The Queue Interface Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 19

Using Linked. List for Queue Liang, Introduction to Java Programming, Tenth Edition, (c) 2013

Using Linked. List for Queue Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 20

The Priority. Queue Class Priority. Queue. Demo Run Liang, Introduction to Java Programming, Tenth

The Priority. Queue Class Priority. Queue. Demo Run Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 21

Case Study: Evaluating Expressions Stacks can be used to evaluate expressions. Evaluate Expression Liang,

Case Study: Evaluating Expressions Stacks can be used to evaluate expressions. Evaluate Expression Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 22

Algorithm Phase 1: Scanning the expression The program scans the expression from left to

Algorithm Phase 1: Scanning the expression The program scans the expression from left to right to extract operands, operators, and the parentheses. 1. 1. If the extracted item is an operand, push it to operand. Stack. 1. 2. If the extracted item is a + or - operator, process all the operators at the top of operator. Stack and push the extracted operator to operator. Stack. 1. 3. If the extracted item is a * or / operator, process the * or / operators at the top of operator. Stack and push the extracted operator to operator. Stack. 1. 4. If the extracted item is a ( symbol, push it to operator. Stack. 1. 5. If the extracted item is a ) symbol, repeatedly process the operators from the top of operator. Stack until seeing the ( symbol on the stack. Phase 2: Clearing the stack Repeatedly process the operators from the top of operator. Stack until operator. Stack is empty. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 23

Example Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All

Example Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 24