<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Suraj&#039;s blog &#187; Iterator</title>
	<atom:link href="http://www.surajshrestha.com.np/tag/iterator/feed" rel="self" type="application/rss+xml" />
	<link>http://www.surajshrestha.com.np</link>
	<description>imagination more important than knowledge</description>
	<lastBuildDate>Sun, 08 Aug 2010 23:20:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Selective Iterator demo for Iterator Pattern in Java</title>
		<link>http://www.surajshrestha.com.np/java/selective-iterator-demo-for-iterator-pattern-in-java.html</link>
		<comments>http://www.surajshrestha.com.np/java/selective-iterator-demo-for-iterator-pattern-in-java.html#comments</comments>
		<pubDate>Mon, 13 Apr 2009 05:56:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Iterator]]></category>
		<category><![CDATA[Iterator Pattern]]></category>
		<category><![CDATA[JFrame]]></category>

		<guid isPermaLink="false">http://www.surajshrestha.com.np/?p=140</guid>
		<description><![CDATA[In this post, I am going to show demo of External and Internal Selective Iterator done in Java. Selective Iterator iterates through the collection but leaves the elements which do not meet criteria specified in predicate logic. ]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;"> <img class="alignleft size-full wp-image-141" title="Selective Iterator Demo" src="http://www.surajshrestha.com.np/wp-content/uploads/2009/04/selective-iterator-demo.jpg" alt="Selective Iterator Demo" width="460" height="310" />  </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">In my <a title="Reverse Iterator Demo" href="http://www.surajshrestha.com.np/java/reverse-iterator-demo.html" target="_self">earlier post</a>, I have shown demo of External Complete Reverse Iterator for Iterator Pattern.</span></span><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">In this post, I am going to show demo of External and Internal Selective Iterator done in Java. Selective </span></span><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">Iterator iterates through the collection but leaves the elements which do not meet criteria specified in predicate logic. </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">For this to implement using Iterator pattern, major requirements are : functor interface, concrete functor class, predicate interface, concrete predicate class, customized collection (like Vector, Arraylist), Object class, selective Iterator and main application.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">Functor interface and class are used to implement certain function. The function is included in an object which executes the function based on input parameters. The functor call is like below.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">Functor&lt;Swimmer&gt; functor = </span><strong><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">new</span></strong><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> SwimmerFunctor(</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">JTextArea2</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">);</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">functor.process(swimmer);</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">And its implementation is like below.</span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><strong></strong> <strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">public</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">void</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> process(Swimmer swimmer){<span style="mso-tab-count: 2;">           </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span></span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">textArea</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.append(swimmer.getFname()+</span><span style="font-family: &quot;Courier New&quot;; color: #2a00ff; font-size: 10pt; mso-ansi-language: EN-GB;">&#8221; &#8220;</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">+swimmer.getLname()+ </span><span style="font-family: &quot;Courier New&quot;; color: #2a00ff; font-size: 10pt; mso-ansi-language: EN-GB;">&#8221; \n&#8221;</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">);<span style="mso-tab-count: 1;">      </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span>}</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">Using this technique to delegate work to another object is called functor pattern. </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">Predicate is also a special functor but it always return true or false. In my example, I have used predicate to check whether the age of swimmer is above or equal to 12 or not.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">A selective Iterator uses predicate to check whether to iterate through a particular element or not.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">The iteration loop becomes like this</span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">Functor&lt;Swimmer&gt; functor = </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">new</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> SwimmerFunctor(</span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">JTextArea2</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">);</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">Predicate&lt;Swimmer&gt; pred = </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">new</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> SwimmerPredicate();</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">Iterator&lt;Swimmer&gt; swIterator = </span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">slist</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.selectiveIterator(pred);</span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: 0.5in; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">while</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">(swIterator.hasNext()){<span style="mso-tab-count: 3;">              </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span>Swimmer swimmer = swIterator.next();</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span>functor.process(swimmer);</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span>}</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">If iteration is placed inside the collection, then it becomes Internal selective Iteration. If placed outside, it becomes<span style="mso-spacerun: yes;">  </span>External Selective Iteratoration.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">In the demo, I have created Swimmer as object and added 9 swimmers of age 11 and 12 to customized concrete collection of type myList. An external complete built-in iterator is used to populate all the swimmers in first JTextArea of JFrame. The selective external iterator is used to populate swimmers that have age of 12 or greater in the second JTextArea of the JFrame. Also, I have created a method inside myList named doAll(Functor&lt;T&gt; functor, Predicate&lt;T&gt; pred) which does selective iteration inside the myList i.e. Internal Selective Iteration.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.surajshrestha.com.np/java/selective-iterator-demo-for-iterator-pattern-in-java.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reverse Iterator Demo using Iterator Pattern</title>
		<link>http://www.surajshrestha.com.np/java/reverse-iterator-demo.html</link>
		<comments>http://www.surajshrestha.com.np/java/reverse-iterator-demo.html#comments</comments>
		<pubDate>Sun, 12 Apr 2009 07:16:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Iterator]]></category>
		<category><![CDATA[Iterator Pattern]]></category>
		<category><![CDATA[JFrame]]></category>

		<guid isPermaLink="false">http://www.surajshrestha.com.np/?p=127</guid>
		<description><![CDATA[In this post, I have tried to show a customized Iterator that can be used in Iterator Pattern in Java using JFrame. It is an External Complete Iterator Pattern. This Iterator (IteratorReverse) implements java built-in Iterator and overwrites next(), hasNext() and remove() method.]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">In this post, I have tried to show a customized Iterator that can be used in Iterator Pattern in Java using JFrame. It is an External Complete Iterator Pattern. This Iterator (IteratorReverse) implements java built-in Iterator and overwrites next(), hasNext() and remove() method. I do not concern much about remove() method so, I have left it blank. However, I have modified next() method to return element from the back of the collection that it is iterating. Also, hasNext() checks if final element has reached or not. The complete description goes below. Full source code is available here. <a title="Reverse Iterator Demo Source Code" href="http://qp1d8g.bay.livefilestore.com/y1prY318c2wF25H2bHla0MM-dg6PFMBTNXRqQrwaVHszYnXQj36IOXa1EDWwTp43-iuYy-wWqQ6Uag8RTvjaTzTuIKVRNntc8NS/ReverseIterator.zip?download" target="_self">Download</a></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><img class="alignnone" title="Reverser Iterator Demo" src="http://farm4.static.flickr.com/3369/3434002090_e87e4bfab1.jpg?v=0" alt="" width="460" height="310" /> </p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">First of all, I created a customized collection myList which extends built-in Vector. It has got two methods. </span></span></p>
<p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in; margin: 0in 0in 0pt 0.75in; mso-add-space: auto; mso-list: l0 level1 lfo1;"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;" lang="EN-US"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">1.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">revIterator(): It returns IteratorReverse that I am going to create </span></span></p>
<p class="MsoListParagraphCxSpLast" style="text-indent: -0.25in; margin: 0in 0in 10pt 0.75in; mso-add-space: auto; mso-list: l0 level1 lfo1;"><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;" lang="EN-US"><span style="mso-list: Ignore;"><span style="font-family: Calibri; font-size: small;">2.</span><span style="font: 7pt &quot;Times New Roman&quot;;">       </span></span></span><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">doAll(): It processes all the elements of collection internally using functor.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">doAll() implementation is simple. It is shown below.</span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: #3f7f5f; font-size: 10pt; mso-ansi-language: EN-GB;">//method to to internal reverse operation (phase 3)</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-spacerun: yes;">    </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">public</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">void</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> <span style="background: silver; mso-highlight: silver;">doAll</span>(Functor&lt;T&gt; functor){</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-spacerun: yes;">    </span><span style="mso-tab-count: 1;">  </span>Iterator&lt;T&gt; it = </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">this</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.revIterator();</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-spacerun: yes;">    </span><span style="mso-tab-count: 1;">  </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">while</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">(it.hasNext()){</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-spacerun: yes;">    </span><span style="mso-tab-count: 2;">        </span>functor.process(it.next());</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-spacerun: yes;">    </span><span style="mso-tab-count: 1;">  </span>}<span style="mso-spacerun: yes;">    </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-spacerun: yes;">    </span>}</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">But here, IteratorRevese (implementing Iterator and returned by revIterator) has to return element from reverse side of collection. The implementation of IteratorReverse goes like below.</span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">public</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">class</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> IteratorReverse&lt;T&gt; </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">implements</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> Iterator&lt;T&gt;{</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span>myList&lt;T&gt; </span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span></span><strong><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">int</span></strong><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">; </span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #3f7f5f; font-size: 10pt; mso-ansi-language: EN-GB;">//to maintain state or to maintain position of it in collection</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">I have implemented next() and hasNext() method as follows.</span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: #646464; font-size: 10pt; mso-ansi-language: EN-GB;">@Override</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">public</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> T next() {</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">if</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">(</span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">&gt;= </span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.size()){</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 3;">                  </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">return</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">null</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">;</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span>}</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">else</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">{</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 3;">                  </span>T t = </span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.elementAt(</span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.size()-</span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">-1);<span style="mso-tab-count: 3;">              </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 3;">                  </span></span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> = </span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> +1;</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 3;">                  </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">return</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> t;</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span>}<span style="mso-tab-count: 2;">           </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span>}</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: #646464; font-size: 10pt; mso-ansi-language: EN-GB;">@Override</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">public</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">boolean</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> hasNext() {</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">if</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">(</span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">&gt;= </span><span style="font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.size()){</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 3;">                  </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">return</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">false</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">;</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span>}</span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 2;">            </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">else</span></strong></p>
<p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 3;">                  </span></span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">return</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"> </span><strong><span style="font-family: &quot;Courier New&quot;; color: #7f0055; font-size: 10pt; mso-ansi-language: EN-GB;">true</span></strong><span style="font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;"><span style="mso-tab-count: 1;">      </span>}</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">IteratorReverse use generics for type safety and reuse. The following summarizes the main logic of back reversal</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">T t = </span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.elementAt(</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.size()-</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">-1);<span style="mso-tab-count: 2;">        </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">When we forward ‘index’ keeps on increasing while </span></span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">myList</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">.size()-</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: #0000c0; font-size: 10pt; mso-ansi-language: EN-GB;">index</span><span style="line-height: 115%; font-family: &quot;Courier New&quot;; color: black; font-size: 10pt; mso-ansi-language: EN-GB;">-1 </span><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">keeps on decreasing.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">I have implemented Functor pattern through interface. SwimmerFunctor is concrete implementation of Interface Functor which takes JTextArea2 from mainApp as argument and appends text into it as shown in picture above.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"> </p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;">As shown in figure above, when ‘All Swimmers’<span style="mso-spacerun: yes;">  </span>button is pressed, it will use built-in Iterator and iterates through the collection in forward direction.<span style="mso-spacerun: yes;">  </span>But when ‘All Swimmers Backward’ button is pressed, it will use IteratorReverse and iterates through the collection in backward direction.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span lang="EN-US"><span style="font-family: Calibri; font-size: small;"> </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.surajshrestha.com.np/java/reverse-iterator-demo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
