固体部分によって決定されるかまたはそれに等しい大きさ比較器を属性
1.分析に等しいカスタムエンティティの例
A)オーバーライドのhashCode()とequals()メソッド2
b)の具体例:
1 クラスのStu { 2 プライベート文字列名= NULL ; 3 プライベート int型の年齢= 0 ; 4 5 公共ステュ(文字列名、int型の年齢){ 6 本 .nameの= 名前。 7 この .age = 年齢; 8 } 9 // 覆写オブジェクト中的にメソッドに等しい 10個の 公共 ブール等しい(オブジェクトobj){ 11 であれば(この ==のOBJ){ 12 リターン 真。 13 } 14 であれば((OBJ!instanceofの{ステュ)) 15 リターン 偽。 16 } 17 のStu STU = (ステュ)OBJ。 18 であれば((stu.age == 本 .age)&& この.name.equals(stu.name)){ 19 リターン 真。 20 } 21 リターン 偽。 22 } 23 // 方法的ハッシュコード中覆写オブジェクト 24 公共 int型のハッシュコード(){ 25 リターン この.name.hashCode()* この.age。 26 } 27 }
2.エンティティのインスタンスのサイズを比較するいくつかのプロパティ(1つ以上のフィールド)
1)Comparableインタフェースを実装するカスタムクラスを作ります
同等のインターフェースとのcompareTo()メソッドをオーバーライドする実装は、のcompareTo()メソッドをソートする方法を示しています。
2)ソートモードのコンパレータを指定します
比較器及び受信方法は、正の整数を返す場合と比較(オブジェクトO1は、オブジェクトO2)被験者インスタンスのメソッド、およびサイズ比較O1とO2が、より大きい前記O1とO2を書き換え、0を返す場合、それらが戻った場合は、同じであることを示しますO1とO2未満陰性整数。
私は同等インターフェース、特に実施例Aを実装します。
1つの パブリック クラスの製品は、実装匹敵{ 2 プライベート文字列名を、 3 プライベート ダブル価格。 4つの 5 パブリック製品(){ 6 } 7つの 8 公共財(文字列名、二重価格){ 9 この .nameの= 名前。 10 この .price = 価格。 11 } 12 13 公共の文字列のgetName(){ 14 リターン名。 15 } 16 17 公共の ボイドのsetName(文字列名){ 18 この .nameの= 名前。 19 } 20 21 公共 ダブルgetPrice(){ 22 リターン価格。 23 } 24 25 公共 ボイド setPrice(二重価格){ 26 この .price = 価格。 27 } 28 29 @Override 30 パブリック文字列のtoString(){ 31 リターン "商品{"は、+ 32 "NAME =" '+名+' \ '' + 33である "価格=" + +価格。 34が ''} ; 35 } 36 37 // 方法の指定された商品比較、ローからハイへの価格によると、存在している場合次いで、製品名によってローからハイにソートし、同じ価格、 38である @Override 39 公共 のint のcompareTo(物体O){ 40 IF(O instanceofの商品){ 41である 商品商品= (財)O; 42は、 IF(この .price> 商品.price){ 43は リターン 1 ; 44れる } さもなければ IF(この .price < goods.price){ 45 リターン -1 ; 46である } さもなければ 47 // 0を返す 48 リターン この.name.compareTo(goods.name); 49 } 50 投 新しい新規のRuntimeException(「着信データを型の不一致" ); 51 } 52 }
II。着信コンパレータインタフェース、具体例B
1 @Test 2 公共 ボイドTEST2(){ 3件の 4 商品[] ARR = 新製品[5 ]。 5つの ARR [0] = 新製品( "lenovoMouse"、34 ); 6つの ARR [1] = 新製品( "dellMouse"、66 ); 7つの ARR [2] = 新製品( "xiaomiMouse"、50 ); 8つの ARR [3] = 新製品( "hahaMouse"、66 ); 9つの ARR [4] = 新製品( "hahaMouse"、166 )。 10 11 は、Arrays.sort(ARR、新しい新しいコンパレータ(){ 12れ 13がされて // ローからハイにソートされた製品名によると、道の商品比較を指定して、低価格でソートされた 14 @Override 15 公共 のint {(O1、O2オブジェクトオブジェクト)の比較 16 。17 IF(O1 instanceofの 製品O2 && のinstanceof グッズ){ 18である 19の。 グッズG1 = (財)01; 20は、 用品G2は= (財)O2; 21は、 IF (g1.getName()に等しい(g2.getName())){ 22であります リターン - Double.compare(g1.getPrice()、g2.getPrice()); 23です }他{ 24 リターンg1.getName()のcompareTo(g2.getName());. 25 } 26である } 27 投 新しい新規のRuntimeException( "データ型入力と矛盾" ); 28 } 29 }); 30 31である のSystem.out.println (Arrays.toString(ARR)から); 32 33は / * 34のれる 実行結果: 35 [商品{NAME = 'dellMouse' ,.価格= 66.0}、{商品名= 'hahaMouse'}価格= 166.0。 36の 製品名= { 'hahaMouse' ,.価格= 66.0}、{商品名= 'lenovoMouse'}。価格= 34.0、 37 [ 商品{NAME = 'xiaomiMouse'、価格= 50.0}] 38 * / 39 40 }
インタフェースコンパレータと比較例3)比較可能なインターフェース
同等のインターフェースは、一度任意の位置に実装されたオブジェクト・クラス同等のインターフェースは、サイズを比較することができることを保証する、方法を指定します。
コンパレータインターフェイスは比較的一時的な性質です。
参考データ: