1 / 41

Problem Of The Day

Problem Of The Day. Decipher the following phrase: STANDS 0 _ 2 3 4 5 6 7 8 9. Problem Of The Day. Decipher the following phrase: STANDS 0 _ 2 3 4 5 6 7 8 9 I just knew that No one understands. CSC 212 – Data Structures. Lecture 29: Iterator and Iterable. List ADT.

sakina
Télécharger la présentation

Problem Of The Day

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. Problem Of The Day • Decipher the following phrase: STANDS 0 _ 2 3 4 5 6 7 8 9

  2. Problem Of The Day • Decipher the following phrase: STANDS 0 _ 2 3 4 5 6 7 8 9 • I just knew that No one understands

  3. CSC 212 – Data Structures Lecture 29:Iterator and Iterable

  4. List ADT • Collection which we can access all elements • Add element before an existing one • Return the Collection’s 3rd element • Loop over all elements without removing them • List ADTs differ in how they provide access • IndexListuses indices for absolution positioning • Can only use relative positions in NodeList

  5. List ADT • Collection which we can access all elements • Add element before an existing one • Return the Collection’s 3rd element • Loop over all elements without removing them • List ADTs differ in how they provide access • IndexListuses indices for absolution positioning • Can only use relative positions in NodeList

  6. List ADT • Collection which we can access all elements • Add element before an existing one • Return the Collection’s 3rd element • Loop over all elements without removing them • List ADTs differ in how they provide access • IndexList uses indicesfor absolution positioning • Can only use relative positions in NodeList

  7. List ADT • Collection which we can access all elements • Add element before an existing one • Return the Collection’s 3rd element • Loop over all elements without removing them • List ADTs differ in how they provide access • IndexList uses indicesfor absolution positioning • Can only use relative positions in NodeList Must violate ADT to access List’s elements

  8. Oops… • Collection which we can access all elements • Add element before an existing one • Return the Collection’s 3rd element • Loop over all elements without removing them • List ADTs differ in how they provide access • IndexList uses indicesfor absolution positioning • Can only use relative positions in NodeList Must violate ADT to access List’s elements

  9. Iterators • Scans elements in a Collection • Initial use will return first element… • …then second element returned with next call… • …returns the third element next… • …and so on until it moves past the last element • Iterator instance returned by another ADT • Process data without hard-coding ADT into method • Makes it easy to write code using anyCollection

  10. Iterators • Scans elements in a Collection • Initial use will return first element… • …then second element returned with next call… • …returns the third element next… • …and so on until it moves past the last element • Iterator instance returned by another ADT • Process data without hard-coding ADT into method • Makes it easy to write code using anyCollection

  11. Using Iterator • Write loops using an Iterator • Iterator can be used to get data from anything • Combine structures’ elements using Iterator • Improves modularity • Classes work with anything providing an Iterator • Improves reuse • Ignore details of how to access elements within ADT • Very simple code leaves hard part to Iterator

  12. Iterator Interface package java.util; public interface Iterator<E> {booleanhasNext();Enext() throws NoSuchElementException;void remove() throws UnsupportedOperationException; }

  13. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator

  14. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  15. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  16. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  17. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  18. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  19. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  20. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  21. How Iterators Work • Maintain a cursorshowing where they work • Value at cursor returned when next() called • Veryimplementation specific issues for cursor • To iterate over an IndexList, cursor must be index • Cursor is Position for PositionList’sIterator List

  22. Iteratorfor IndexList public class IndexListIterator<E> {privateIndexList<E>theList;privateintcursor;public IndexListIterator(IndexList<E> list) {theList= list;cursor = 0;} public booleanhasNext(){ returncursor!= theList.size();}// More goes here…

  23. Limit of Iterator • Defines limited set of methods • Cannot add or change elements in Collection • Changes to data elsewhere invalidates Iterator • Interface provides remove(), but… • …implementing it is a royal pain in the • Support not required by the interface • Instead throw UnsupportedOperationException • Relying on remove()risky,since it is optional • When in doubt, skip it

  24. Position with Benefits • cursoris next Positionin PositionList • Needing to know class specifics avoided • Rely on PositionList’s methods instead head tail elements

  25. Position with Benefits • cursoris next Positionin PositionList • Needing to know class specifics avoided • Rely on PositionList’s methods instead head tail elements

  26. Position with Benefits • cursoris next Positionin PositionList • Needing to know class specifics avoided • Rely on PositionList’s methods instead head tail elements

  27. Position with Benefits • cursoris next Positionin PositionList • Needing to know class specifics avoided • Rely on PositionList’s methods instead head tail elements

  28. Position with Benefits • cursoris next Positionin PositionList • Needing to know class specifics avoided • Rely on PositionList’s methods instead head tail elements

  29. Iteratorfor PosiionList privatePositionList<E>theList;privatePosition<E>cursor;public booleanhasNext(){ returncursor!= null;}public Enext() throwsNoSuchElementException{if (cursor== null) {throw new NoSuchElementException(); }EretVal=cursor.element(); if (cursor!=theList.last()) {cursor=theList.next(cursor);} else {cursor = null; } return retVal;}

  30. Why Should You Care? Iterable

  31. Iterable Interface • So simple makes Iterator look complex

  32. Iterable Interface • So simple makes Iterator look complex • Get ready for this– it is really big!

  33. Iterable Interface • So simple makes Iterator look complex • Get ready for this– it is really big! • Rocks your world and makes code easy to write

  34. Iterable Interface • So simple makes Iterator look complex • Get ready for this– it is really big! • Rocks your world and makes code easy to write • Java’s prettiest feature relies on this interface

  35. Iterable Interface • So simple makes Iterator look complex • Get ready for this– it is really big! • Rocks your world and makes code easy to write • Java’s prettiest feature relies on this interface

  36. Iterable Interface • So simple makes Iterator look complex • Get ready for this– it is really big! • Rocks your world and makes code easy to write • Java’s prettiest feature relies on this interface package java.lang; public interface Iterable<E> {publicIterator<E> iterator(); }

  37. For-each for the Win • Iterablesupport built-into Java for free • As is any class in the java.lang package • For-each loops workwith any Iterable class • Uses Iteratorto loop over each element in class • Slightly different loop than normal for loopfor (Type variableName: IterableName)IndexList<Integer>idx = …;for (Integeri :idx) { … }

  38. For-Each Rocks The Hizzy IntegerfindLargest(Iterable<Integer>able) {IntegerretVal=Integer.MIN_VALUE;for (Integerdatum:able) {if (datum>retVal) {retVal=datum; }}return retVal; } • able could be List, HashMap, VertexSet…

  39. Your Turn • Get into your groups and complete activity

  40. About the Grading

  41. For Next Lecture • Read GT 6.4 before Wednesday’s lecture • What if we wantindices & Positions? • Can we handle power to switch between the two? • What implementation issues do Sequences cause? • Week #10 assignment available on Angel • Programming Assignment #2 due in 12 days

More Related