Javaの利用コンパレータ

  ちょうどJavaのを確認するための時間の最初のブログは、コンパレータ、使用するためにどのような方法でレコードを使用しています。

  オブジェクトの配列をソートするために使用されるJavaコンパレータ、主に使用される同等と比較インタフェース

 

  Comparableインタフェースを使用して1、

  まず、ソート同等のオブジェクト・クラスを実装する必要がインターフェイスを実装する、実現が比較される複数のルールCOMPARATO法、最終的なコールjava.utils.Arrays.sort()着信オブジェクトのメソッドを記述するためにCOMPARATO(T他の)方法をオーバーライド配列をソートすることができます。

  次のようにテストは以下のとおりです。

1  インポートjava.util.Arrays。
2  
3  パブリック クラスメイン{
 4  
5      パブリック 静的 ボイドメイン(文字列[]引数){
 6  
7          生徒[] ARR = 新しい生徒[3 ]。
8          ARR [0] = 新しい生徒(3 )。
9          ARR [1] = 新しい学生(2 )。
10の          ARR [2] = 新しい学生(1 )。
11          のために(学生A:ARR)
 12              System.out.print(A +」 " )。
13         Arrays.sort(ARR)。
14          のSystem.out.println();
15          のために(学生A:ARR)
 16              System.out.print(A +」 " )。
17      }
 18  }
 19  
20  クラスの学生は、実装同等<学生> {
 21  
22      INTの数と、
23  
24      公衆学生(INT aNumber){
 25          この .NUMBER = aNumber。
26      }
 27  
28      公共 のintcompareTo(学生O){// Oオブジェクト自体と比較して、そのオブジェクトは、上面と比較され、1を返します。
29          IFこの .NUMBER> o.number){
 30              リターン 1 ;
 31である          } そう IFこの .NUMBER == o.number){
 32              リターン 0 ;
 33であるが          } そう
34が             戻り -1 ;
 35      }
 36  
37 [      パブリック文字列のtoStringを(){
 38は         戻りString.valueOf(番号);
 39      }
 40  
41です }

業績は次のとおりです。

  3 2 1

  1 2 3

 

  注意:

    比較では、あなたは、-1にオーダー、交換の順序を降順-1 1にしたい場合は交換することができます。

=======================================

  図2に示すように、コンパレータを使用して、その 

  時には、Comparableインタフェースを実装して考慮されていませんStudentクラスの設計では、あなた自身のコンパレータクラスを記述することができます。

  ()することができる比較(T O1、T O2)メソッドをオーバーライドするコンパレータ<T>インターフェイスを実装するクラスを作成し、最終的には、Arrays.sortを呼び出すときに、着信アレイがソートされ、コンパレータコンパレータクラスします

  次のようにテストは以下のとおりです。

1つの パッケージの練習。
2  インポートjava.util.Arrays。
3  輸入はjava.util.Comparator。
4  
5  パブリック クラスメイン{
 6  
7      パブリック 静的 ボイドメイン(文字列[]引数){
 8  
9          学生[] ARR = 新しい生徒[3 ]。
10の          ARR [0] = 新しい生徒(1,3 )。
11の          ARR [1] = 新しい生徒(3,5 )。
12の          ARR [2] = 新しい生徒(2,5 )。
13         (学生A:ARR)
 14              System.out.printの(A + "\ T" );
 15          は、Arrays.sort(ARR、新しい新しいStudentComparator()); //着信クラス、及び比較器アレイ
 16          のSystem.out.println( );
 17。         ための(学生A:ARR)
 18である              System.out.print(A + "\ T"の);
 19      }
 20  }
 21は、 
22である クラスの学生{
 23である 
24      のint 番号; //科学番号
 25      のint スコア; //はスコア
 26  
27      公共の学生(int型 aNumber、int型Ascore){
 28          この .NUMBER = aNumber;
 29          この .score = Ascore;
 30      }
 31である 
32      パブリック文字列のtoString(){
 33は、         リターン番号+ "ノースコア:" + スコア;
 34である     }
 35  
36  }
 37  
38である クラス StudentComparator 実装コンパレータ<学生> {
 39  
40      公共 intは(学生O1、O2学生)を比較{//新しい比較規則の作成、以前のハイスコア、同じスコア場合は、前回の学習を大量に追加します。
41で         IF(o1.score> o2.score)
 42がされています             返す -1 ;
43          他の 場合(o1.score < o2.score)
 44              リターン 1 45          {
 46              であれば(o1.number> o2.number)
 47                  リターン -1 48              他に あれば(o1.number < o2.number)
 49                  リターン 1 50              他の
51                  の戻り 0 ;
52          }
 53      }
 54  
55 }

  結果:

  3 3スコア:5スコア2:5 1スコア
  3スコア:スコア2:5画分1:3

 上記方法はまた、異なる種類の効果を達成するために、修飾された比較ルールとして、この試験のようにすることができます。

=======================================

   あなたが収集・コンパレータを渡して、第二の方法に類似のコレクションを、ソートしたい場合はCollections.sort(ST、新しいComparatorSort())を呼び出すことができるとき。

 

おすすめ

転載: www.cnblogs.com/ELAIRS/p/11621106.html