open class Playlist(val songliste: MutableList<Song>) {
open fun gesamteSpieldauer() = songliste.sumBy { it.spieldauer }
fun SpieldauerMitXOderBesser(x: Int): Int {
var tmp: Int = 0
for (s in songliste) {
if(s.bewertung >= x){
tmp += 1
}
}
return tmp
}
open fun alleAbspielen() {
for (s in songliste) {
s.abspielen()
}
}
}
class DynamicPlaylist (songlisteParam: MutableList<Song>): Playlist(songlisteParam){
class SongNode(val song : Song, var nextSong : SongNode?)
private var first: SongNode? = null
private var last: SongNode? = null
init {
reset();
/*first = SongNode(songliste.get(0), null)
var runPointer = first
for( i in 1..songliste.size){
runPointer?.nextSong = SongNode(songliste.get(i), null)
runPointer = runPointer?.nextSong ?: runPointer
}
last = runPointer*/
}
fun add(derSongTM : Song){
last?.nextSong = SongNode(derSongTM, null)
last = last?.nextSong
}
fun take() : Song?{
var tmp = first
first = first?.nextSong
return tmp?.song
}
fun take2(searchSong : Song){
var test : Boolean = false
var runTest = first
while(runTest != null){
if(runTest.song == searchSong)
test = true
runTest = runTest.nextSong
}
if(test){
if(first?.song == searchSong)
first = first?.nextSong
else{
var runPointer = first
while(runPointer?.nextSong?.song != searchSong){
runPointer = runPointer?.nextSong
}
if(runPointer.nextSong == last){
last = runPointer
last?.nextSong = null
}
else
runPointer.nextSong = runPointer.nextSong?.nextSong
}
}
else
println("Der zu löschende Song ist nicht vorhanden!")
}
fun reset(){
first = SongNode(songliste.get(0), null)
var runPointer = first
for( i in 1..songliste.size-1){
runPointer?.nextSong = SongNode(songliste.get(i), null)
runPointer = runPointer?.nextSong ?: runPointer
}
last = runPointer
}
override fun gesamteSpieldauer() : Int{
var runPointer = first
var tmp : Int = 0
while (runPointer != null){
tmp += runPointer.song.spieldauer
runPointer = runPointer.nextSong
}
return tmp
}
override fun alleAbspielen() {
var runPointer = first
while (runPointer != null){
runPointer.song.abspielen()
runPointer = runPointer.nextSong
}
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎