/**
  * List all tracks by the given artist.
  *
  * @param artist The artist's name.
  */
 public void listByArtist(String artist) {
   for (Track track : tracks) {
     if (track.getArtist().contains(artist)) {
       System.out.println(track.getDetails());
     }
   }
 }
 /**
  * muestra los detalles de todos los tracks almacenados en un organizador usando un iterador.
  * ------------------- 0055
  */
 public void listAllTrackWithIterator() {
   Iterator<Track> pistas = tracks.iterator();
   while (pistas.hasNext()) {
     Track mostrarPistas = pistas.next();
     System.out.println(mostrarPistas.getDetails());
   }
 }
  /** Show a list of all the tracks in the collection. */
  public void listAllTracks() {
    System.out.println("Track listing: ");

    for (Track track : tracks) {
      System.out.println(track.getDetails());
    }
    System.out.println();
  }
 /**
  * añade un método a la clase MusicOrganizer llamado findInTitle que tome un único parámetro de
  * tipo String y muestre por pantalla la información de los tracks que contienen dicha cadena en
  * el título de la canción. ------------ 0052
  */
 public void findInTitle(String informaciónDeTracks) {
   for (Track datos :
       tracks) { // --------------------------------------------------------------------- 0052
     if (datos.getTitle().contains(informaciónDeTracks)) {
       System.out.println(datos.getDetails());
     }
   }
 }
 /**
  * permite reproducir los primeros segundos de cada canción en orden aleatorio y cumple los
  * siguientes requisitos: Cada canción debe reproducirse una única vez y deben reproducirse todas
  * las canciones. Los contadores de reproducción deben actualizarse correctamente. Debe mostrar
  * por pantalla los detalles de la canción que está sonando en este momento. --------------------
  * 0057
  */
 public void
     playSuffle() { // ------------------------------------------------------------------------------ 0057
   Collections.shuffle(
       tracks); // ---solo con esta línea la colección queda desordenada aleatoriament.
   for (Track track : tracks) {
     track.incrementaContadorReproduciones();
     System.out.println("Canción de. " + track.getDetails());
     player.playSample(track.getFilename());
   }
 }
  /** OTRA FORMA DE HACER EL EJERCICO DEL MT. public void playSuffle() */
  public void playShuffle2() {
    ArrayList<Track> copia = new ArrayList<>();
    copia = (ArrayList) tracks.clone();
    int numeroDeCancionesReproducidas = 0;
    while (numeroDeCancionesReproducidas < tracks.size()) {
      // elijo nº aleatorio entre las canciones que quedan por elegir.
      Random aleatorio = new Random();
      int numeroAleatorio = aleatorio.nextInt(copia.size());

      Track trackElegido = copia.get(numeroAleatorio);
      trackElegido.incrementaContadorReproduciones();
      System.out.println("Canción de. " + trackElegido.getDetails());
      player.playSample(trackElegido.getFilename());

      copia.remove(numeroAleatorio);
      numeroDeCancionesReproducidas++;
    }
  }
 /**
  * List a track from the collection.
  *
  * @param index The index of the track to be listed.
  */
 public void listTrack(int index) {
   System.out.print("Track " + index + ": ");
   Track track = tracks.get(index);
   System.out.println(track.getDetails());
 }