import java.util.Arrays; import java.io.*; public class PlayList { // Instance variables private Song[] songs; private int count; private int capacityIncrement; // Constructor // See below for a new usage of the reserved keyword this. public PlayList( int initialCapacity, int capacityIncrement ) { if ( initialCapacity < 1 ) throw new IllegalArgumentException( "Illegal capacity: "+ initialCapacity ); if ( capacityIncrement < 1 ) throw new IllegalArgumentException( "Illegal increment: "+ capacityIncrement ); songs = new Song[ initialCapacity ]; this.capacityIncrement = capacityIncrement; } public PlayList( int initialCapacity ) { this( initialCapacity, 10 ); } public PlayList() { this( 10, 10 ); } // Returns the number of elements currently stored in the PlayList public int getSize() { return count; } public boolean addSong( Song song ) { if ( song == null ) throw new IllegalArgumentException( "null is not a valid argument" ); for ( int i=0; i= count ) throw new IndexOutOfBoundsException( "" + index ); return songs[ index ]; } // Arrays already has a sort method. public void sort2( java.util.Comparator c ) { Arrays.sort( songs, c ); } // Implementing our own sort method. public void sort( java.util.Comparator c ) { for ( int i = 0; i < count; i++ ) { int min = i; // Find the smallest element in the unsorted region of the // array. for ( int j = i+1; j < count; j++ ) if ( c.compare( songs[ j ], songs[ min ] ) < 0 ) min = j; // Swap the smallest unsorted element with the element // found a position i. Song tmp = songs[ min ]; songs[ min ] = songs[ i ]; songs[ i ] = tmp; } } public static PlayList getSongsFromFile( String fileName ) throws IOException, FileNotFoundException { BufferedReader input; input = new BufferedReader( new InputStreamReader( new FileInputStream( fileName ) ) ); PlayList result = new PlayList(); int lineNumber = 0; String line; while ( ( line = input.readLine() ) != null ) { result.addSong( Song.parseSong( line ) ); } input.close(); return result; } public void writeSongsToFile( String fileName ) throws IOException, FileNotFoundException { PrintWriter output; output = new PrintWriter( new OutputStreamWriter( new FileOutputStream( fileName ) ) ); for ( int i=0; i