/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static class Song implements Comparable< Song> {
this .sno = sno;
this .name = name;
this .artist = artist;
}
{
return sno + "\t " + name + "\t " + artist;
}
@Override
public int compareTo( Song arg0) {
// TODO Auto-generated method stub
return 0 ;
}
public static final Comparator< Song> NAMEComparator = new Comparator< Song> ( ) {
@Override
public int compare( Song o1, Song o2) {
return o1.name .compareTo ( o2.name ) ; // salary is also positive integer
}
} ;
public static final Comparator< Song> ARTISTComparator = new Comparator< Song> ( ) {
@Override
public int compare( Song o1, Song o2) {
return o1.artist .compareTo ( o2.artist ) ; // salary is also positive integer
}
} ;
}
public static void main
( String [ ] args
) {
ArrayList< Song> list = new ArrayList< Song> ( ) ;
list.add ( new Song( 1 , "The Best Of Me" , "Bryan Adams" ) ) ;
list.add ( new Song( 2 , "I'm Ready" , "Bryan Adams" ) ) ;
list.add ( new Song( 3 , "Cloud Number Nine" , "Bryan Adams" ) ) ;
list.add ( new Song( 4 , "Leave out" , "Linkin Park" ) ) ;
list.add ( new Song( 5 , "What I've Done" , "Linkin Park" ) ) ;
list.add ( new Song( 6 , "In the end" , "Linkin Park" ) ) ;
list.add ( new Song( 7 , "Hey You" , "Pink Floyd" ) ) ;
list.add ( new Song( 8 , "Another Brick in the Wall" , "Pink Floyd" ) ) ;
list.add ( new Song( 9 , "Comfortably Numb" , "Pink Floyd" ) ) ;
list.add ( new Song( 10 , "Hey You" , "Bryan Adams" ) ) ;
System .
out .
println ( "\n Original List:" ) ; for ( Song s : list) {
System .
out .
println ( s.
toString ( ) ) ; }
list.sort ( Song.ARTISTComparator ) ;
System .
out .
println ( "\n Sorted by Artist" ) ; for ( Song s : list) {
System .
out .
println ( s.
toString ( ) ) ; }
list.sort ( Song.NAMEComparator ) ;
System .
out .
println ( "\n Sorted by Name" ) ; for ( Song s : list) {
System .
out .
println ( s.
toString ( ) ) ; }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU29uZyBpbXBsZW1lbnRzIENvbXBhcmFibGU8U29uZz57CgkJcHVibGljIFNvbmcoaW50IHNubywgU3RyaW5nIG5hbWUsIFN0cmluZyBhcnRpc3QpIHsKCQkJdGhpcy5zbm8gPSBzbm87CgkJCXRoaXMubmFtZSA9IG5hbWU7CgkJCXRoaXMuYXJ0aXN0ID0gYXJ0aXN0OwoJCX0KCQlwcml2YXRlIEludGVnZXIgc25vOwoJCXByaXZhdGUgU3RyaW5nIG5hbWU7CgkJcHJpdmF0ZSBTdHJpbmcgYXJ0aXN0OwoJCQoJCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQoJCXsKCQkJcmV0dXJuIHNubyArICJcdCIgKyBuYW1lICsgIlx0IiArIGFydGlzdDsKCQl9CgoJCUBPdmVycmlkZQoJCXB1YmxpYyBpbnQgY29tcGFyZVRvKFNvbmcgYXJnMCkgewoJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCgkJCXJldHVybiAwOwoJCX0KCQlwdWJsaWMgc3RhdGljIGZpbmFsIENvbXBhcmF0b3I8U29uZz4gTkFNRUNvbXBhcmF0b3IgPSBuZXcgQ29tcGFyYXRvcjxTb25nPigpewoKCSAgICAgICAgQE92ZXJyaWRlCgkgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShTb25nIG8xLCBTb25nIG8yKSB7CgkgICAgICAgICAgICByZXR1cm4gbzEubmFtZS5jb21wYXJlVG8obzIubmFtZSk7IC8vIHNhbGFyeSBpcyBhbHNvIHBvc2l0aXZlIGludGVnZXIKCSAgICAgICAgfQoJICAgICAgCgkgICAgfTsKCSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbXBhcmF0b3I8U29uZz4gQVJUSVNUQ29tcGFyYXRvciA9IG5ldyBDb21wYXJhdG9yPFNvbmc+KCl7CgoJICAgICAgICBAT3ZlcnJpZGUKCSAgICAgICAgcHVibGljIGludCBjb21wYXJlKFNvbmcgbzEsIFNvbmcgbzIpIHsKCSAgICAgICAgICAgIHJldHVybiBvMS5hcnRpc3QuY29tcGFyZVRvKG8yLmFydGlzdCk7IC8vIHNhbGFyeSBpcyBhbHNvIHBvc2l0aXZlIGludGVnZXIKCSAgICAgICAgfQoJICAgICAgCgkgICAgfTsKCgoKCgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQkKCQlBcnJheUxpc3Q8U29uZz4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8U29uZz4oKTsKCQlsaXN0LmFkZChuZXcgU29uZygxLCAiVGhlIEJlc3QgT2YgTWUiLCAiQnJ5YW4gQWRhbXMiKSk7CgkJbGlzdC5hZGQobmV3IFNvbmcoMiwgIkknbSBSZWFkeSIsICJCcnlhbiBBZGFtcyIpKTsKCQlsaXN0LmFkZChuZXcgU29uZygzLCAiQ2xvdWQgTnVtYmVyIE5pbmUiLCAiQnJ5YW4gQWRhbXMiKSk7CgkJCgkJCgkJbGlzdC5hZGQobmV3IFNvbmcoNCwgIkxlYXZlIG91dCIsICJMaW5raW4gUGFyayIpKTsKCQlsaXN0LmFkZChuZXcgU29uZyg1LCAiV2hhdCBJJ3ZlIERvbmUiLCAiTGlua2luIFBhcmsiKSk7CgkJbGlzdC5hZGQobmV3IFNvbmcoNiwgIkluIHRoZSBlbmQiLCAiTGlua2luIFBhcmsiKSk7CgkJCgkJbGlzdC5hZGQobmV3IFNvbmcoNywgIkhleSBZb3UiLCAiUGluayBGbG95ZCIpKTsKCQlsaXN0LmFkZChuZXcgU29uZyg4LCAiQW5vdGhlciBCcmljayBpbiB0aGUgV2FsbCIsICJQaW5rIEZsb3lkIikpOwoJCWxpc3QuYWRkKG5ldyBTb25nKDksICJDb21mb3J0YWJseSBOdW1iIiwgIlBpbmsgRmxveWQiKSk7CgkJbGlzdC5hZGQobmV3IFNvbmcoMTAsICJIZXkgWW91IiwgIkJyeWFuIEFkYW1zIikpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiXG5PcmlnaW5hbCBMaXN0OiIpOwoJCWZvcihTb25nIHMgOiBsaXN0KXsKCQkJU3lzdGVtLm91dC5wcmludGxuKHMudG9TdHJpbmcoKSk7CgkJfQoJCQoJCQoJCWxpc3Quc29ydChTb25nLkFSVElTVENvbXBhcmF0b3IpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiXG5Tb3J0ZWQgYnkgQXJ0aXN0Iik7CgkJZm9yKFNvbmcgcyA6IGxpc3QpewoJCQlTeXN0ZW0ub3V0LnByaW50bG4ocy50b1N0cmluZygpKTsKCQl9CgkJCgkJbGlzdC5zb3J0KFNvbmcuTkFNRUNvbXBhcmF0b3IpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiXG5Tb3J0ZWQgYnkgTmFtZSIpOwoJCWZvcihTb25nIHMgOiBsaXN0KXsKCQkJU3lzdGVtLm91dC5wcmludGxuKHMudG9TdHJpbmcoKSk7CgkJfQoJCQoJfQp9