【问题标题】:How to sort List<Integer>? [duplicate]如何对 List<Integer> 进行排序? [复制]
【发布时间】:2013-12-29 08:43:26
【问题描述】:

我有代码并且我使用列表来存储数据。 我想对它的数据进行排序,那么有什么方法可以对数据进行排序还是必须通过比较所有数据来手动排序?

import java.util.ArrayList; 
import java.util.List;

public class tes
{
    public static void main(String args[])
    {
        List<Integer> lList = new ArrayList<Integer>();
        lList.add(4);
        lList.add(1);
        lList.add(7);
        lList.add(2);
        lList.add(9);
        lList.add(1);
        lList.add(5);
        for(int i=0; i<lList.size();i++ )
        {
            System.out.println(lList.get(i));
        }
    }
}

【问题讨论】:

  • Collections.sort(lList);。如果要按降序排序,则应精确自定义比较器。顺便说一句,Google 上的 “java 排序列表” 确实会比在这里提问更快地为您提供结果。

标签: java list sorting


【解决方案1】:

您可以使用Collections 对数据进行排序:

import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

public class tes
{
    public static void main(String args[])
    {
        List<Integer> lList = new ArrayList<Integer>();

        lList.add(4);       
        lList.add(1);
        lList.add(7);
        lList.add(2);
        lList.add(9);
        lList.add(1);
        lList.add(5);

        Collections.sort(lList);

        for(int i=0; i<lList.size();i++ )
        {
            System.out.println(lList.get(i));
        }

    }
}

【讨论】:

    【解决方案2】:

    升序:

     Collections.sort(lList); 
    

    降序:

    Collections.sort(lList, Collections.reverseOrder()); 
    

    【讨论】:

      【解决方案3】:

      使用 Collections 类 API 进行排序。

      Collections.sort(list);
      

      【讨论】:

        【解决方案4】:

        在此处使用Collections.sort(yourListHere) 进行排序即可。

        您可以从here 阅读更多关于集合的信息。

        【讨论】:

          【解决方案5】:

          按升序排序:

          Collections.sort(lList);
          

          对于相反的顺序:

          Collections.reverse(lList);
          

          【讨论】:

          • Collections.reverse(lList); 只会反转列表中的元素,而不是按降序排序。
          【解决方案6】:

          您正在使用列表,具体的 ArrayList。 ArrayList 还实现了 Collection 接口。 Collection 接口具有 sort 方法,该方法用于按升序对指定 Collection 列表中存在的元素进行排序。这将是您案件的最快且可能是最好的方法。

          可以通过这种方式将列表按升序排序作为默认操作:

          Collections.sort(list);
          

          可以通过这种方式对列表进行降序排序:

          Collections.reverse(list);
          

          根据这些事实,你的解决方案必须这样写:

          public class tes 
          {
              public static void main(String args[])
              {
                  List<Integer> lList = new ArrayList<Integer>();
                  lList.add(4);
                  lList.add(1);
                  lList.add(7);
                  lList.add(2);
                  lList.add(9);
                  lList.add(1);
                  lList.add(5);
          
                  Collections.sort(lList);
                  for(int i=0; i<lList.size();i++ )
                  {
                      System.out.println(lList.get(i));
                  }
               }
          }
          

          有关收藏的更多信息,您可以阅读here

          【讨论】:

            【解决方案7】:

            您可以在Collections 类中使用实用方法 public static &lt;T extends Comparable&lt;? super T&gt;&gt; void sort(List&lt;T&gt; list)

            public static <T> void sort(List<T> list,Comparator<? super T> c)
            

            请参阅ComparableComparator 接口以更灵活地对对象进行排序。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-02-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-11-02
              • 1970-01-01
              • 2013-08-28
              相关资源
              最近更新 更多