Program to demonstrate how to implement Iterator Design Pattern in Java.
1. Song.java
2. SongCollection.java
3. SongIterationDemo.java
Output of the program :
1. Song.java
package com.hubberspot.designpattern.behavioral.iterator; public class Song { private String songName; private String singer; public Song(String songName, String singer) { super(); this.songName = songName; this.singer = singer; } public String getSongName() { return songName; } public String getSinger() { return singer; } }
2. SongCollection.java
package com.hubberspot.designpattern.behavioral.iterator; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class SongCollection { private List< Song > songList = new ArrayList< Song >(); public void addSong(Song song) { songList.add(song); } public Iterator< Song > getSongIterator() { return new SongIterator(); } private class SongIterator implements Iterator< Song > { int currentSongIndex = 0; @Override public boolean hasNext() { if (currentSongIndex >= songList.size()) { return false; } else { return true; } } @Override public Song next() { return songList.get(currentSongIndex++); } @Override public void remove() { songList.remove(--currentSongIndex); } } }
3. SongIterationDemo.java
package com.hubberspot.designpattern.behavioral.iterator; import java.util.Iterator; public class SongIterationDemo { public static void main(String[] args) { Song s1 = new Song("Rock You !!!" , "Eric Martin"); Song s2 = new Song("Someone Gone !!!" , "Neuone Derek"); Song s3 = new Song("Remember Me !!!" , "Justin Diebler"); SongCollection songCollection = new SongCollection(); songCollection.addSong(s1); songCollection.addSong(s2); songCollection.addSong(s3); System.out.println("Displaying Song Info : \n"); Iterator< Song > songIterator = songCollection.getSongIterator(); while(songIterator.hasNext()) { Song song = songIterator.next(); System.out.println("Song Name : " + song.getSongName()); System.out.println("Song Singer : " + song.getSinger()); System.out.println(); } System.out.println("Removing Song and Displaying :\n"); songIterator.remove(); songIterator = songCollection.getSongIterator(); while(songIterator.hasNext()) { Song song = songIterator.next(); System.out.println("Song Name : " + song.getSongName()); System.out.println("Song Singer : " + song.getSinger()); System.out.println(); } } }
Output of the program :