-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathassignment8pt2.java
88 lines (70 loc) · 1.99 KB
/
assignment8pt2.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.util.ArrayList;
import java.util.List;
class Song {
private String title;
private String artist;
public Song(String title, String artist) {
this.title = title;
this.artist = artist;
}
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
}
interface SongIterator {
boolean hasNext();
Song next();
}
interface Playlist {
SongIterator createIterator();
void addSong(Song song);
}
class PlaylistImpl implements Playlist {
private List<Song> songs;
public PlaylistImpl() {
this.songs = new ArrayList<>();
}
public void addSong(Song song) {
songs.add(song);
}
public SongIterator createIterator() {
return new PlaylistIterator(songs);
}
}
class PlaylistIterator implements SongIterator {
private List<Song> songs;
private int position;
public PlaylistIterator(List<Song> songs) {
this.songs = songs;
this.position = 0;
}
public boolean hasNext() {
return position < songs.size();
}
public Song next() {
if (hasNext()) {
Song song = songs.get(position);
position++;
return song;
} else {
return null; // or throw an exception
}
}
}
public class assignment8pt2 {
public static void main(String[] args) {
Playlist playlist = new PlaylistImpl();
playlist.addSong(new Song("Shape of You", "Ed Sheeran"));
playlist.addSong(new Song("Blinding Lights", "The Weeknd"));
playlist.addSong(new Song("Someone Like You", "Adele"));
SongIterator iterator = playlist.createIterator();
System.out.println("Playlist Songs:");
while (iterator.hasNext()) {
Song song = iterator.next();
System.out.println(song.getTitle() + " by " + song.getArtist());
}
}
}