package com.michaelthomas.collection; /** * @author Michael Thomas (www.michael-thomas.com) michael@michael-thomas.com * */ import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class MyCollectionTraverse { //NOTE: For learning, you must see the JUnit test file in the /test/ directory and matching package! public String iterateForLoopExample(Collection collection) { //Works with any Collections. StringBuilder sb = new StringBuilder(); for (Iterator iterator = collection.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); sb.append(string + (iterator.hasNext() ? ", " : "")); } return sb.toString(); } public String iterateForLoopExample(Iterator myIterator) { //Works with any Iterator. StringBuilder sb = new StringBuilder(); for (Iteratoriterator = myIterator; iterator.hasNext();) { String string = (String) iterator.next(); sb.append(string + (iterator.hasNext() ? ", " : "")); } return sb.toString(); } public String iteratorWhileExample(Collection collection) { //Works with all collections. StringBuilder sb = new StringBuilder(); Iterator iterator = collection.iterator(); while (iterator.hasNext()) { String string = (String) iterator.next(); sb.append(string + (iterator.hasNext() ? ", " : "")); } return sb.toString(); } public String forEachExample(Collection collection) { StringBuilder sb = new StringBuilder(); int counter = 0; for (String string : collection) { sb.append(string + (counter != collection.size()-1 ? ", " : "")); counter++; //Because you can have duplicates (indexOf() doesn't work) you need a counter! } return sb.toString(); } //List ONLY! public String iterateForLoopReverseExample(List list) { //Only works with List - Notice the use of "ListIterator" vs "Iterator"! StringBuilder sb = new StringBuilder(); for (ListIterator iterator = list.listIterator(list.size()); iterator.hasPrevious();) { String string = (String) iterator.previous(); sb.append(string + (iterator.hasPrevious() ? ", " : "")); } return sb.toString(); } //List ONLY! public String iteratorWhileReverseExample(List list) { //Only works with List - Notice the use of "ListIterator" vs "Iterator"! StringBuilder sb = new StringBuilder(); ListIterator iterator = list.listIterator(list.size()); while (iterator.hasPrevious()) { String string = (String) iterator.previous(); sb.append(string + (iterator.hasPrevious() ? ", " : "")); } return sb.toString(); } //List ONLY! public String forLoopExample(List list) { //Only works with List - Collection and Set doesn't have get() StringBuilder sb = new StringBuilder(); for (int i = 0; i < list.size(); i++) { String string = (String) list.get(i); sb.append(string + (i < list.size()-1 ? ", " : "")); } return sb.toString(); } //List ONLY! public String listIteratorExample (List list) { StringBuilder sb = new StringBuilder(); for (ListIterator iterator = list.listIterator(); iterator.hasNext();) { String string = (String) iterator.next(); sb.append(string + (iterator.hasNext() ? ", " : "")); } return sb.toString(); } //List ONLY! public String listIteratorReverseExample(List list) { //Only works with List - Notice the use of "ListIterator" vs "Iterator"! StringBuilder sb = new StringBuilder(); for (ListIterator iterator = list.listIterator(list.size()); iterator.hasPrevious();) { String string = (String) iterator.previous(); sb.append(string + (iterator.hasPrevious() ? ", " : "")); } return sb.toString(); } }