Maison  >  Article  >  Java  >  java Collections.sort() implémente la méthode par défaut et la méthode personnalisée de tri de liste

java Collections.sort() implémente la méthode par défaut et la méthode personnalisée de tri de liste

巴扎黑
巴扎黑original
2017-06-26 11:13:511831parcourir

1. La méthode de tri de liste par défaut fournie par java

Code principal :

List Liu Yuanyuan ");

list.add("Wang Shuo");
list.add("Li Ming");
list.add("Liu Di");
list. add("Liu Bu");

//Ordre croissant
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//Remarque : il est basé sur le pinyin des caractères chinois Triés par ordre alphabétique, plutôt que selon la méthode générale de tri des caractères chinois
for(int i=0;i {
System. out.print(list.get( i));
      }
      System.out.println("");

//Ordre décroissant
                                                                                                     en utilisant   en utilisant   en utilisant en utilisant   en utilisant   en utilisant         en utilisant en utilisant ‐ ‐ ‐ } ‐ }                                                        Trié par ordre alphabétique
for(int i=0;i

Résultat de sortie :

Li Ming Liu Bu Liu Di Liu Yuanyuan Wang Shuo

Wang Shuo Liu Yuanyuan Liu Di Liu Bu Li Ming


2. Règles de tri personnalisées :

La première est que la classe modèle implémente l'interface Comparable et remplace la méthode int compareTo(Object o)

Classe modèle :

classe publique StudentDTO implémente Comparable

{

private String name;
private int age;

public String getName()

{

Return name;
}

public void setName( Nom de la chaîne)

{

this.name = name;
}

public ObjType getType()

{

type de retour;
}

public void setAge(int age)

{

this.age= age;
}

@ Override

public int compareTo(Object o)

{

StudentDTO sdto = (StudentDTO)o;

int otherAge = sdto.getAge();

// remarque : la comparaison des types d'énumération dépend de l'ordre de la liste des types de la méthode d'énumération

/ / donc, si la propriété comparée est de type enum, alors sa comparaison suit l'ordre ObjEnum.objType

renvoie this.age(otherAge);

}
}
<🎜. > Méthode principale :

public static void main(String[] args)

{

List studentList = new ArrayList();


StudentDTO s1 = new StudentDTO ();

s.setName("yuanyuan");

s.setAge(22);

studentList.add(s1);

StudentDTO s1 = new StudentDTO ();

s.setName("lily");

            s.setAge( 23);

      studentList.add(s2);

      Collections.sort(studentList); //Par ordre croissant d'âge 22, 23, Collections.reverse(studentList) //Par ordre décroissant d'âge 23,22

>

La seconde est que la classe comparateur implémente l'interface Comparator et remplace la méthode int compare(Object o1, Object o2) ; class StudentDTO implémente Comparable

{

private String name;

private int age;

public String getName( ) {

return name;

}

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

     public ObjType getType()
     {
         type de retour ;
>

class MyCompartor implémente Comparator
{
     @Override
     public int compare(Object o1, Object o2)

    {

           StudentDTO sdto1= (StudentDTO )o1;

           StudentDTO sdto2= (StudentDTO )o2;


           return sdto1.getAge.compareTo(stdo2.getAge())

    }
}

           主方法:

public static void main(String[] args)

{

      List studentList = new ArrayList();

      StudentDTO s1 = new StudentDTO ();

      s.setName("yuanyuan");

      s.setAge(22);


      studentList.add(s1);

      StudentDTO s1 = new StudentDTO ();

      s.setName("lily");

      s.setAge (23);

      studentList.add(s2);

      MyComparetor mc = new MyComparetor();

      Collections.sort(studentList,mc);     //按照age升序 22,23,

      Collections.reverse(studentList,mc);    // 按照 Âge 降序 23,22

}

附注 :

1. 对于 数 组 的 排序 方法 如下 : :

String[] noms = {"王林",  "杨宝", "李镇", "刘迪", "刘波"};  

Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.

SIMPLIFIED_CHINESE

));//升序;   

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

2.

用com.ibm.icu.text. Collator替换java.text.Collator,用com.ibm.icu.util.ULocale替换java.util.Locale


3.在定义时的先后顺序比较的,越后面的越大,而不是按照值的字母先后顺序比较的。

 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn