keating 发表于 2013-1-27 04:51:14

Comparator排序的使用 来自head first java

import java.util.*;import java.io.*;public class Jukebox5{ArrayList<Song> songList=new ArrayList<Song>();public static void main(String[] args){    new Jukebox5().go();}class ArtistCompare implements Comparator<Song>{public int compare(Song one,Song two){   return one.getArtist().compareTo(two.getArtist());}}class RatingCompare implements Comparator<Song>{public int compare(Song one,Song two){   return one.getRating().compareTo(two.getRating());}}//Comparator类多好,想按什么排序就按什么排序//用sort(List o)以及实现compareTo()就不行喽public void go(){    getSongs();    System.out.println(songList);    //Collections.sort(songList);//System.out.println(songList);    //这个排序现在仍然可以用    ArtistCompare artistCompare=new ArtistCompare();Collections.sort(songList,artistCompare);System.out.println(songList);RatingCompare ratingCompare=new RatingCompare();Collections.sort(songList,ratingCompare);System.out.println(songList);}void getSongs(){    try{File file=new File("SongListMore.txt");BufferedReader reader=new BufferedReader(new FileReader(file));String line=null;while((line=reader.readLine())!=null){    addSong(line);}}catch(Exception ex){ex.printStackTrace();}}void addSong(String lineToParse){    String[] tokens=lineToParse.split("/");Song nextSong=new Song(tokens,tokens,tokens,tokens);songList.add(nextSong);}}/*☆调用单一参数的sort(List o)方法代表由list元素上的compareTo()方法来决定顺序。因此元素必须要实现Comparable这个几口。☆调用sort(list o,Comparator c)方法代表不会调用list元素的compareTo()方法,而会使用Comparator的commpare()方法。这意味着list元素不需要实现Comparable。*/
页: [1]
查看完整版本: Comparator排序的使用 来自head first java