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 :
