Collections.sort();用法学习

来源:互联网 发布:入驻淘宝天猫商城 编辑:程序博客网 时间:2024/06/04 19:10

今天做个小程序 就是KTV点歌单 :从文件读取歌曲信息---------》按照不同的信息做出不同的排列

//已创建Song类型 

第一步:读取文件

               File songFile = new File("D:\\曹蕊\\workspace\\KtvSongJob","songList.txt");

               BufferedReader reader = new BufferedReader(new FileReader(file));  

               String songInfo ;

              while((songInfo = reader.readLine()) != null)

                  {

                      addSong(line);

                  }

第二 步:addSong(String line)把文件放到SongList列表中用于显示

               public void addSong(String line)

                  {

                    String[] s = line.split("/");//把歌曲信息字段分开

                    Song mySong = new Song(s[0], s[1], s[2], s[3]);

                    longList.add(mySong);

                  }

第三步:按顺序显示list信息

                 Collections.sort();//依照字母排序

                 此方法分析:1:static <T extends Comparable<? super T>> voidsort(List<T> list)
           传入sort()的T需要实现 Comparable ;puclic int compareTo(T another){自己的排序逻辑};//当Collections.sort()调用时 会自动调用compareTo();方法

    2:       static <T> voidsort(List<T> list, Comparator<? super T> comparator)            因为Song 里只能实现一个compareTo();因此 若想除了按歌曲名称排序还要增加按歌星名字排序的话  可以在compareTo();里加if语句  但是 做法并不好;

            所以用sort()另一种重载版本;Comparator 是个独立的接口;

           需要实现 public int compare(T one,T two);方法

           Collections.sort();调用时会自动调用compare();

         根据传入sort()的参数不同  Collections.sore()会调用不同的sort()版本

0 0