のComparableインタフェース

このセクションでは、2つの質問について説明します。

  • 文字列の配列をソート
  • 注文のカスタムクラス

文字列の配列をソートする1​​.実装

パブリック クラスTestSort1 { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        文字列[] STRS = 新しい文字列[] { "zhangsan"、 "リシ"、 "wangwu"、 "zhaosi" }。
        Arrays.sort(STRS)。
        System.out.print(Arrays.toString(STRS))。
    } 
}
出力:辞書の最初の文字の順にソート。
[リージ、wangwu、zhangsan、zhaosi

2.カスタムクラスの並べ替えを達成するために

カスタムクラスを作成します。

パブリック クラスEmployee1 {
     プライベート文字列名;
    プライベート ダブル給与; 
    
    公共Employee1(文字列名、ダブル給料){
         この .nameの= 名前。
        この .salary = 給与; 
    } 
    
    パブリック文字列のgetName(){
         戻り名。
    } 
    
    公共 ダブルgetSalary(){
         戻り給料。
    } 
    
    公共 ボイド raiseSalary(ダブルbyPercent){
         ダブルレイズ=給与* byPercent / 100 
        給与 + = 昇給; 
    } 
    @Override 
    パブリック文字列のtoString(){
         リターン "Employee1 [NAME =" +名+ "給与=" +給与+ "]" 
    } 
}

テスト:

パブリック クラスTestSort { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        Employee1 [] E1 = 新しい Employee1 [3 ]。
        E1 [ 0] = 新しい Employee1( "zhangsan" 5000.0 )。
        E1 [ 1] = 新しい Employee1( "リシ"、6000.0 )。
        E1 [ 2] = 新しい Employee1( "wangwu"、7500.0 )。
        Arrays.sort(E1)。
        System.out.print(Arrays.toString(E1))。

    } 
}

 このような書かれたコードは、コンパイラではないが与えられたが、実行されています:

java.lang.ClassCastExceptionが

改善された動作:

  カスタムクラスが実装匹敵するインタフェースおよびインターフェイスメソッドの定義に移動します

パブリック クラス Employee1 実装 Comparableを<Employee1> {//为泛型Comparableを提供参数
     プライベート文字列名;
    プライベート ダブル給与; 
    
    公共Employee1(文字列名、ダブル給料){
         この .nameの= 名前。
        この .salary = 給与; 
    } 
    
    パブリック文字列のgetName(){
         戻り名。
    } 
    
    公共 ダブルgetSalary(){
         戻り給料。
    } 
    
    公共 ボイド raiseSalary(ダブルbyPercent){
        ダブルレイズ=給与* byPercent / 100 ; 
        給与 + = 昇給; 
    } 

    @Override 
    パブリック文字列のtoString(){
         リターン "Employee1 [NAME =" +名+ "給与=" +給与+ "]" 
    } 

    @Override 
    公共 のint のcompareTo(Employee1 O){
         リターンDouble.compare(o.salary、給与); 
    } 
}

 結果:

[Employee1 [NAME = wangwu、給与= 7500.0]、Employee1 [NAME =リージ、給与= 6000.0]、Employee1 [NAME = zhangsan、給与= 5000.0]給与を降順に従って配置されています。

結論:は、Arrays.sort()を使用するには、クラスの実装に行くにはComparableインタフェースを定義したが、実際には、Stringクラスはまた、Comparableインタフェースを実装しています。

おすすめ

転載: www.cnblogs.com/liu-chen/p/11873893.html