簡単な紹介
一般的な選別ツールを実装し、ユーザによって選択されたオブジェクトの種類に応じてソートされ、例えば、年齢年齢の使用によってソート賃金又は同等の給与場合によって選別、仕分け
コードの実装
図のコードの構造:
パッケージcn.test.logan.day08。 輸入はjava.util.ArrayList; パブリック クラスSortUtilTest { 公共 静的 ボイドメイン(文字列[]引数){ ユーザU1 = 新しいユーザー( "001"、 "张三"、30,1000 )。 ユーザU2 = 新しいユーザー( "002"、 "李四"、29,1200 ); ユーザU3 = 新しいユーザー( "003"、 "王五"、27,1000 ); ユーザーU4 = 新しいユーザー( "004"、 "狗蛋"、24,1400 ); ArrayListの <ユーザ>リスト= 新しいのArrayList < List.add(U2); List.add(U3); List.add(U4); // 年齢のソート // SortUtil.sort(リスト、新しい新AgeCompare()); // 注文有料 // SortUtil.sort(リスト、新しい新SalaryCompare()); // 賃金への最初のよると、給与は年齢に応じ等しい SortUtil.sort(リスト、新しい新SalaryAgeCompare()); のために(ユーザU:リスト){ のSystem.out .println(U); } } }
パッケージcn.test.logan.day08。 輸入はjava.util.ArrayList; パブリック クラスSortUtil { 公共の 静的な 無効ソート(のArrayList <ユーザー> ULIST、COMの比較){ のために(int型は、 I = 0; I <uList.size() - 1; I ++ ){ のために(int型 J = 0; jの<ULIST。サイズ() - 1-I; J ++ ){ // 判断大小 ブール RES = com.compare(uList.get(J)、uList.get(J + 1 ))。 もし(RES){ ユーザーTMP = uList.get(J)。 uList.set(J、uList.get(J1 )); uList.set(J 1 、TMP); } } } } }
パッケージcn.test.logan.day08。 パブリック インターフェース比較{ パブリック ブール比較(ユーザU1、ユーザU2)。 }
パッケージ; cn.test.logan.day08 / ** * Userクラスを定義 備える*:ID、名前、年齢、給与 * @author QIN * * / パブリック クラスユーザー{ プライベート文字列ID; プライベート文字列名; プライベート int型の年齢; プライベート Aフロート給与、 パブリックユーザ(){ } パブリックユーザ(ID列、文字列名、INT年齢、フロート給料){ この .ID = ID; この .nameの= 名; この .age =年齢; この .salary = 給与; } パブリック文字列のgetId(){ 戻りID。 } 公共 ボイドSETID(文字列ID){ この .ID = ID。 } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } 公共 INT getAge(){ 戻り年齢; } パブリック 無効 setAge(int型年齢){ この .age = 年齢。 } 公共 フロートgetSalary(){ 戻り給料。 } 公共 ボイド setSalary(フロート給料){ この .salary = 給与。 } // 定义のtoString方法 @Override パブリック文字列のtoString(){ 戻り 、この + "" + .IDをこの .nameの+ "" + この .age + "" + この.salary。 } }
以下の3つの年齢、ソート最初の賃金等の給与、年齢、後
パッケージcn.test.logan.day08。 パブリック クラス AgeCompareの実装を比較{ @Override パブリック ブールの比較(ユーザU1、ユーザU2){ 場合(u1.getAge()> u2.getAge()){ 返す 真。 } を返す 偽。 } }
パッケージcn.test.logan.day08。 パブリック クラス SalaryCompareの実装を比較{ @Override パブリック ブールの比較(ユーザU1、ユーザU2){ 場合(u1.getSalary()> u2.getSalary()){ 返す 真。 } を返す 偽。 } }
パッケージcn.test.logan.day08; パブリック クラスは SalaryAgeCompare 実装を比較{ @Override パブリック ブール(ユーザU1、ユーザU2)を比較は{ //は、彼らは同じ年齢で注文している場合は、最初の賃金、給料に応じてソート IF(u1.getSalary()> u2.getSalary()){ リターン trueに; } IF(u1.getSalary()== u2.getSalary()){ IF(u1.getAge()> u2.getAge()){ リターン trueに; } } 戻り falseに、 } }