Kyaria

Playlist.kt

Jun 11th, 2019
748
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.00 KB | None | 0 0
  1. open class Playlist(val songliste: MutableList<Song>) {
  2.  
  3.     open fun gesamteSpieldauer() = songliste.sumBy { it.spieldauer }
  4.  
  5.     fun SpieldauerMitXOderBesser(x: Int): Int {
  6.  
  7.         var tmp: Int = 0
  8.  
  9.         for (s in songliste) {
  10.             if(s.bewertung >= x){
  11.                 tmp += 1
  12.             }
  13.         }
  14.  
  15.         return tmp
  16.     }
  17.  
  18.     open fun alleAbspielen() {
  19.  
  20.         for (s in songliste) {
  21.  
  22.             s.abspielen()
  23.         }
  24.     }
  25. }
  26.  
  27. class DynamicPlaylist (songlisteParam: MutableList<Song>): Playlist(songlisteParam){
  28.  
  29.     class SongNode(val song : Song, var nextSong : SongNode?)
  30.  
  31.     private var first: SongNode? = null
  32.     private var last: SongNode? = null
  33.  
  34.     init {
  35.  
  36.         reset();
  37.  
  38.         /*first = SongNode(songliste.get(0), null)
  39.  
  40.         var runPointer = first
  41.  
  42.         for( i in 1..songliste.size){
  43.  
  44.             runPointer?.nextSong = SongNode(songliste.get(i), null)
  45.             runPointer = runPointer?.nextSong ?: runPointer
  46.         }
  47.  
  48.         last = runPointer*/
  49.     }
  50.  
  51.     fun add(derSongTM : Song){
  52.  
  53.         last?.nextSong = SongNode(derSongTM, null)
  54.         last = last?.nextSong
  55.     }
  56.  
  57.     fun take() : Song?{
  58.  
  59.         var tmp = first
  60.         first = first?.nextSong
  61.  
  62.         return tmp?.song
  63.     }
  64.  
  65.     fun take2(searchSong : Song){
  66.  
  67.         var test : Boolean = false
  68.         var runTest = first
  69.  
  70.         while(runTest != null){
  71.  
  72.             if(runTest.song == searchSong)
  73.                 test = true
  74.  
  75.             runTest = runTest.nextSong
  76.         }
  77.  
  78.         if(test){
  79.  
  80.             if(first?.song == searchSong)
  81.             first = first?.nextSong
  82.             else{
  83.  
  84.                 var runPointer = first
  85.  
  86.                 while(runPointer?.nextSong?.song != searchSong){
  87.  
  88.                     runPointer = runPointer?.nextSong
  89.                 }
  90.  
  91.                 if(runPointer.nextSong == last){
  92.  
  93.                     last = runPointer
  94.                     last?.nextSong = null
  95.                 }
  96.                 else
  97.                     runPointer.nextSong = runPointer.nextSong?.nextSong
  98.             }
  99.         }
  100.         else
  101.             println("Der zu löschende Song ist nicht vorhanden!")
  102.     }
  103.  
  104.     fun reset(){
  105.  
  106.         first = SongNode(songliste.get(0), null)
  107.  
  108.         var runPointer = first
  109.  
  110.         for( i in 1..songliste.size-1){
  111.  
  112.             runPointer?.nextSong = SongNode(songliste.get(i), null)
  113.             runPointer = runPointer?.nextSong ?: runPointer
  114.         }
  115.  
  116.         last = runPointer
  117.     }
  118.  
  119.     override fun gesamteSpieldauer() : Int{
  120.  
  121.         var runPointer = first
  122.         var tmp : Int = 0
  123.  
  124.         while (runPointer != null){
  125.  
  126.             tmp += runPointer.song.spieldauer
  127.             runPointer = runPointer.nextSong
  128.         }
  129.  
  130.         return tmp
  131.     }
  132.  
  133.     override fun alleAbspielen() {
  134.  
  135.         var runPointer = first
  136.  
  137.         while (runPointer != null){
  138.  
  139.             runPointer.song.abspielen()
  140.             runPointer = runPointer.nextSong
  141.         }
  142.     }
  143.  
  144. }
Advertisement