このセクションでは、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インタフェースを実装しています。