ホームページ  >  記事  >  Java  >  Java はリストの並べ替え用のデフォルト メソッドとカスタム メソッドを実装します

Java はリストの並べ替え用のデフォルト メソッドとカスタム メソッドを実装します

怪我咯
怪我咯オリジナル
2017-07-02 10:26:362137ブラウズ

この記事では、リストの並べ替えを実装するための Java Collections.sort() のデフォルト メソッドとカスタム メソッドを主に紹介します。必要な場合は、

1.java

メイン コード:

rrree によって提供されるデフォルトのリスト 並べ替えメソッドを参照してください。


出力結果:

Li Ming Liu Bu Liu Di Liu Yuanyuan Wang Shuo

Wang Shuo Liu Yuanyuan Liu Di Liu Bu Li Ming

2. カスタマイズされた並べ替えルール:

最初はモデルクラスの実装です。 Comparableインターフェイス、int CompareTo(Object o) メソッドをオーバーライドしてオーバーライドします

モデルクラス:

List<String> list = new ArrayList();list.add("刘媛媛");
list.add("王硕");
list.add("李明");
list.add("刘迪");
list.add("刘布");
//升序
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//注意:是根据的汉字的拼音的字母排序的,而不是根据汉字一般的排序方法
for(int i=0;i<list.size();i++)
{
 System.out.print(list.get(i));
}
System.out.println("");
//降序
Collections.reverse(list);//不指定排序规则时,也是按照字母的来排序的
for(int i=0;i<list.size();i++)
{
  System.out.print(list.get(i));
}

2 つ目は、コンパレーター クラスが Comparator インターフェイスを実装し、int Compare(Object o1, Object o2) メソッドをオーバーライドすることです。 ;

モデル クラス: r
public class StudentDTO implements Comparable
{
 private String name;
 private int age;
public String getName()
{
 return name;
}
public void setName(String name)
{
  this.name = name;
}
public ObjType getType()
{
 return type;
}
public void setAge(int age)
{
  this.age= age;
}
@Override
public int compareTo(Object o)
{
  StudentDTO sdto = (StudentDTO)o;
  int otherAge = sdto.getAge();
  // note: enum-type&#39;s comparation depend on types&#39; list order of enum method
  // so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
  return this.age.compareTo(otherAge);
}
}
   主方法:   
public static void main(String[] args)
{
  List<StudentDTO> 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); //按照age升序 22,23,
     Collections.reverse(studentList); //按照age降序 23,22 
}

注:

1.

配列

の並べ替え方法:

public class StudentDTO implements Comparable
{
  private String name;
  private int age;
  public String getName()
  {
   return name;
  }
  public void setName(String name)
 {
   this.name = name;
  }
  public ObjType getType()
  {
   return type;
  }
  public void setAge(int age)
  {
   this.age= age;
  }
} 
   比较器类:
class MyCompartor implements 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<StudentDTO> 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); //按照age降序 23,22 
}
2. より良い結果を得るには、icu4j を使用してみてください。それらの一部は特定の姓として、特定の姓としては特定の文字を使用する場合、

java.text.Collat​​or を com.ibm.icu.text.Collat​​or に、java.util.Locale を com.ibm.icu に置き換えます。 util.ULocale

3. 列挙型 enum1 の場合、.compareTo(enum2) は、列挙型の値のアルファベット順ではなく、定義された順序に従って比較され、後の値が大きくなります。価値観。

以上がJava はリストの並べ替え用のデフォルト メソッドとカスタム メソッドを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。