首頁 > Java > java教程 > java Collections.sort()實作List排序的預設方法和自訂方法

java Collections.sort()實作List排序的預設方法和自訂方法

巴扎黑
發布: 2017-06-26 11:13:51
原創
1876 人瀏覽過

1.java提供的預設list排序方法

主程式碼:

List list = new ArrayList();list.add("劉媛媛");

list.add("王碩");
       list.add("李明");
       list.add("劉迪");
       list.add("劉迪");

       list. add("劉布");


//升序
       Collections.sort(list,Collat​​or.getInstance(java.util.Locale.CHINA));//注意:是根據的漢字的拼音的字母排序的,而不是根據漢字一般的排序方法
       for(int i=0;i        {
    System.out.print(list.get( i));
       }

       System.out.println("");

##///降序
       Collections.reverse(list);///不指定規則時,字母的來排序的
       for(int i=0;i        {
     System.out.print(list.get(i));##  

輸出結果:

李明劉布劉迪劉媛媛王碩

王碩劉媛媛劉迪劉布李明

 

2.自訂的排序規則:

第一種是model類別實作Comparable接口,重寫重寫int compareTo(Object o)方法

            model類別:

public class StudentDTO implements Comparable

{
 private String name;
 private int age;

public String getName()

    return name;
   }

public void setName(String name)

   {

     this.name = name;
   }
#Fpublic ObjType getType( ##    {
    return type;

   }


public void setAge(int age)
   {
     #this.age= age;

 Override

   public int compareTo(Object o)
   {

       StudentDTO sdto = (StudentDTO)o;

## : enum-type's comparation depend on types' list order of enum method

      // so, if compared property is enum-type ,then its # compareTo(otherAge);
   }
}

           主方法:           

#o List studentList = new ArrayList();


      StudentDTO s1 = new StudentDTO ();

      s.setName("yuanyuan");


      s.setName("yuanyuan");
##   
#      studentList.add(s1);

                  StudentDTO s1 = new StudentDTO ();

# ##                  s.setAge( 23);


                  studentList.add(s2);

              /1              Collections.reverse(studentList) ;  //依age降序23,22   

}

第二種是比較器類別實作Comparator接口,重寫int compare(Object o1, Object o2)方法;

           model類別:           

public class StudentDTO implements Comparable

{## String getName( )

     {

         return name;

     }

     public void setName(String name)
    {
         this.name = name;
     }

## # #     }


     public void setAge(int Age)
     {
           this.age=age;

     }




           不同器類:

class MyCompartor 實作Comparator

{

     @Override

     public int Compare(Object o1, Object o2)

    {
#Stu#  sd TO 
##           StudentDTO sdto2= (StudentDTO )o2;

           return sdto1。     主方法:

public static void main(String[] args)

{

      List StudentList = new ArrayList();

      StudentDTO s1 = new StudentDTO ();

      s.setName("yuanyuan");
#  s 2# 

##      StudentList.add(s1);

      研究(23);


      StudentList.add(s2);

      MyComparetor mc = new MyComparetor();

      Collections.sort(studentList();

      Collections.sort(studentList,,mc);     //依年齡升序22,23,

      Collections.reverse(studentList,mc);    //依年齡降序23,22   

##}

 

 

附註:

##1.記憶體的排序方法如下:

String[] names = {"王林",  "楊寶", "李鎮", "劉迪", "劉波"};  

Arrays.sort(names, com.ibm.icu.text.Collat​​or.getInstance(com.ibm.icu.util.ULocale.

SIMPLIFIED_CHINESE

));//升序;   

System.out.println(Arrays.toString(names));      

2.對於漢字的排序:可以嘗試使用ICU4J會得到更好的結果,特別是姓為某些生國外字的時候,

用com.ibm.icu.text 。是按照枚舉類型值中的定義時的字母順序比較的,越後面的越大,

而不是按照值的字母順序比較的。

#

以上是java Collections.sort()實作List排序的預設方法和自訂方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板