黑马程序员技术交流社区

标题: 集合排序 [打印本页]

作者: 程序爱好者    时间: 2014-4-18 13:00
标题: 集合排序
本帖最后由 程序爱好者 于 2014-4-18 13:37 编辑

  1. public static void sort(List<String> list){
  2. for(int x=0;x<list.size()-1;x++){
  3.                         for(int y=0;y<list.size()-x-1;y++){
  4.                                 if(list.get(y).equalsIgnoreCase(list.get(y+1))<0)){
  5.                                         int temp = list.get(y);
  6.                                         list.get(y) = list.get(y+1);
  7.                                         list.get(y+1) = temp;
  8.                                 }
  9.                         }
  10. }
复制代码
List<String> list = new ArrayList<String>();怎样将ArrayList集合中的字符串按字典顺序倒序排列?

作者: 月光海    时间: 2014-4-18 13:17
java中的ArrayList需要通过collections类的sort方法来进行排序

如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法

调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数
sort(List<T> list, Comparator<? super T> c)
          根据指定比较器产生的顺序对指定列表进行排序。
作者: 呆呆沙师妹    时间: 2014-4-18 13:26
我用的是笨方法,建议你代码修改如下:
  1.       for(int x=0;x<list.size()-1;x++){

  2.            for(int y=0;y<list.size()-x-1;y++){

  3.                    //String类实现了Comparable接口
  4.                if(list.get(y).toUpperCase().compareTo(list.get(y+1).toUpperCase())<0){

  5.                       String temp = list.get(y);

  6.                       list.set(y, list.get(y+1));

  7.                       list.set(y+1, temp);

  8.                }
  9.            }
  10.       }
复制代码

作者: sanguodouble1    时间: 2014-4-18 13:27
直接使用工具类
Collections.sort(List<T> list) ,将集合T按升序排列,
然后在用
Collections.reverse(List<?> list)反转一下,那就是倒叙了

作者: 清风有意    时间: 2014-4-18 13:28
代码如下:
  1. package exercise;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;

  5. public class Test4 {
  6.         public static void main(String[] args)
  7.         {
  8.                 List<String> list = new ArrayList<String>();
  9.                 list.add("abc");
  10.                 list.add("dbc");
  11.                 list.add("aac");
  12.                 Collections.sort(list,Collections.reverseOrder());
  13.                 System.out.println(list);
  14.         }
  15.        
  16. }
复制代码

作者: 左拉    时间: 2014-4-18 14:10
本帖最后由 左拉 于 2014-4-18 14:12 编辑

字符串本身重写了排序方法,可以直接按照升序排序,如果想逆序输出,通过Collection.reverse()或者StringBuffer中的reverse()方法就可以实现字符串反转,楼上的用Colletctions代码很好,我用StringBuffer来写:
  1. import java.util.List;
  2. import java.util.ArrayList;

  3. public class Test{
  4.         public static void main(String[] args){
  5.                 List<String> list = new ArrayList<String>();
  6.                 list.add("c");
  7.                 list.add("a");
  8.                 list.add("b");
  9.                 StringBuffer buffer=new StringBuffer(list.toString());
  10.                 System.out.println(buffer.reverse());
  11.         }
  12. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2