Collections.sort();用法学习

今天做个小程序 就是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>> void sort( List<T> list)
           传入sort()的T需要实现  Comparable ;puclic int compareTo(T another){自己的排序逻辑};//当Collections.sort()调用时 会自动调用compareTo();方法

    2:

       static <T> void sort( 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()版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值