Comparator is better than Comparable. To implement comparator, we have to
1. Create a comparator class which will implement "Comparator" interface.
2. Override "compare" method.
3. You can also override "reversed" method to get reverse order.
4. Call Collections.sort and pass arraylist object and comparator class object.
Song.java
1. Create a comparator class which will implement "Comparator" interface.
2. Override "compare" method.
3. You can also override "reversed" method to get reverse order.
4. Call Collections.sort and pass arraylist object and comparator class object.
Song.java
package com.parvez.albumCollection; public class Song { public Song(String t,String a,int r) { setArtist(a); setRanking(r); setTitle(t); } private String title; private String artist; private int ranking; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getArtist() { return artist; } public void setArtist(String artist) { this.artist = artist; } public int getRanking() { return ranking; } public void setRanking(int ranking) { this.ranking = ranking; } public String toString() { return "Title: "+ this.getTitle() + " Artist: " +getArtist() +" Ranking: " + getRanking(); } }
RankingComparator.java
package com.parvez.albumCollection; import java.util.Comparator;public class RankingComparator implements Comparator<Song> { @Overridepublic int compare(Song song1, Song song2) { return song1.getRanking()-song2.getRanking(); } @Overridepublic Comparator<Song> reversed() { return new RankingComparator(){ @Overridepublic int compare(Song song1, Song song2) { return song2.getRanking()-song1.getRanking(); } }; } }AlbumSongs.javapackage com.parvez.albumCollection; import java.io.*; import java.util.ArrayList; import java.util.Collections; public class AlbumSongs { ArrayList<Song> songs=new ArrayList<Song>(); public static void main(String[] args) { AlbumSongs album=new AlbumSongs(); album.getSongs(); album.displaySongs(); System.out.println(); Collections.sort(album.songs,new RankingComparator()); album.displaySongs(); System.out.println(); Collections.sort(album.songs,new RankingComparator().reversed()); album.displaySongs(); System.out.println(); } private void displaySongs() { for (Song song: songs) { System.out.println(song.toString()); } } private void getSongs() { File file; BufferedReader bufferedReader; try { file=new File("input.txt"); bufferedReader=new BufferedReader(new FileReader(file)); String line; while((line=bufferedReader.readLine())!=null) { String[] lineString=line.split(","); Song aSong=new Song(lineString[1],lineString[0],Integer.parseInt(lineString[2])); songs.add(aSong); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
No comments:
Post a Comment