1 / 65

Understanding Unordered Lists and Linked Lists in Java for Expense Processing Application

Learn the properties of unordered lists, sequential search, linked lists, and implementing Java classes for an expense processing application. Enhance coding skills in object-oriented programming for efficient expense management.

martinezr
Download Presentation

Understanding Unordered Lists and Linked Lists in Java for Expense Processing Application

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unordered List Chapter 4

  2. Learning Objectives • Describe the properties of an unordered list. • Study sequential search and analyze its worst-case and average running times. • Discover how the entries of a list may be dynamically rearranged at achieve better search times. • Understand the public interface of an unordered list class in Java and the running times of its methods.

  3. Learning Objectives • Develop a set of classes for an expense processing application based on an unordered list. • Understand how object-oriented programming can be used to write a single piece of code in Java that can perform equality checking based on different criteria for different input objects. • Learn what linked lists are, why they are useful, and how to build and manipulate them.

  4. Learning Objectives • Implement a linked lest class in Java and analyze the running times of its methods. • Implement an unordered list class in Java using a linked list component.

  5. 4.1 Unordered List Properties • Keeping track of daily expenses. • It would be useful to write a program that maintains an expense list of all recorded expenses, that can be used to find quick answers to simple budgeting type questions.

  6. 4.1 Unordered List Properties

  7. 4.1 Unordered List Properties

  8. 4.1 Unordered List Properties • Answer the following questions: • What is the maximum (or minimum) expense, and on what item? • What is the average expense? • What is the total amount spent on a given item? • All these question may be answered by scanning such a list from the beginning and terminating when our question is answered.

  9. 4.1 Unordered List Properties

  10. 4.2 Sequential Search • Operation contains searches for a specific itme in the list. • Since the list is unordered, the only way to conduct the search is to look at every element in the sequence. • If a match is found, the operation returns true, otherwise it returns false.

  11. 4.2 Sequential Search

  12. 4.2 Sequential Search • Best case • 1 • Worst case • n • Unsuccessful search? • n

  13. UnorderedList implementation using array List: array of element

  14. Insert method • insert(“Rami”)

  15. Delete method 1- define loc =0 2- search for item in array list using loop. If item in the list 3- assign item index to loc. 4- store last element of array “list” in index = loc 5- numItems -- Else Print element not in the list

  16. Delete method

  17. delete(“Judy”)

  18. UnorderedList class

  19. 4.3 A List Class • NoSuchElementException thrown back.

  20. 4.3 A List Class

  21. 4.3 A List Class

  22. 4.3 A List Class • Example that enumerates:

  23. 4.3 A List Class • Running times • An implementation should be able to access the last item of the list in O(1) time, so that the add method may be implemented in O(1) time. • Maintain a count of the number of items in the list. • The size method can then simply return this count. • Use a cursor to enumerate a list, so that each of the enumeration methods first and next may be implemented in O(1) time.

  24. 4.4 An ExpenseList Class Using List • An ExpenseList class would support operations for maintaining expenses. • Use the generic List class as a component, implementing all the ExpenseList class methods by reusing code from one or more of the appropriate List class methods. • Every expense will consists of the amount of expense and the item on which the expense was incurred.

  25. 4.4.1 Expense Class Interface

  26. 4.4.1 Expense Class Interface

  27. 4.4.2 Expense Class

  28. 4.4.2 Expense Class

  29. 4.4.3 ExpenseList Class Interface

  30. 4.4.3 ExpenseList Class Interface

  31. 4.4.4 ExpenseList Class Implementation Wrong Wrong

  32. 4.4.4 ExpenseList Class Implementation • minExpense, and aveExpense scan every expense entry in the list.

  33. 4.4.5 Equality of Objects and Searching • Rewrite the method by implementing a search in the method.

  34. 4.4.5 Equality of Objects and Searching • The notion of equality is defined by the equals method of the exp object. • Two expenses are equal if they have the same amount and item. • What if we wanted the equality based only on the item so if two expenses have the same item with different amount they are equal. • We would need to redefine the equality of expenses in terms of item only.

  35. 4.4.5 Equality of Objects and Searching • About Keys • The get method is useful to extract an entire object from the list by matching its key part with a specified key.

  36. 4.4.5 Equality of Objects and Searching • Only use the key part, (ex item )and get returns the entire matching entry (including amount), if any. • What data structure should be used to store the items in a list? • Removing items from anywhere in the list. • Leaves holes in the array. • Uses more space than necessary. • Search times would be greater than O(n). • If the holes are patched up by compacting the array, we would be doing a lot of data movement within the array.

  37. 4.5 Linked List

  38. 4.5 Linked List • To access the entries of the linked list, a reference to its first entry is all we need. • One can access any entry by simply following the chain of links. • When an entry is removed from some place in a linked list, all that needs to be done is to have its predecessor's link refer to its successor. • Similarly, an entry may be inserted anywhere in the list without having to move other entries over to create space.

  39. 4.5 Linked List

  40. 4.5 Linked List • The biggest drawback of the linked list is its inability to perform random accesses for any entry in a single step.

  41. 4.5.1 Node

  42. 4.5.1 Node • A node is defined in terms of itself: • next field of the node class is a reference to another Node<T> object. • Self-referential structure

  43. 4.5.2 Insertion • Adding to the beginning of the list.

  44. 4.5.2 Insertion • Adding in between two nodes.

  45. 4.5.2 Insertion • Adding to the end of the list

  46. 4.5.3 Deletion • Deleting the last node, or in-between node. • Deleting the first node • L = L.next

  47. 4.5.3 Deletion • In both insertion and deletion we assumed the existence of P, a reference to the node just prior to the one to be inserted or deleted.

  48. 4.5.4 Access • Stepping through, or traversing, all the entries of a linked list from beginning to end following the chain of references is a useful operation in practice.

  49. 4.5.4 Access • Deleting the first occurrence of the string “Carrot”.

  50. 4.5.4 Access • We can't delete nextNode unless we have a reference to the node prior to it.

More Related