最初の例はリスト内のオブジェクトです。比較可能なインターフェイスは次のとおりです。
/*** 準拠順序对User排序*/public class User 実装 Comparable <user> { private String name;プライベート整数順序。 public String getName() { 名前を返します。 public void setName(String name) { this.name = 名前; public Integer getOrder() { 順序を返します。 public void setOrder(Integer order) { this.order = order; public int CompareTo(User arg0) { return this.getOrder().compareTo(arg0.getOrder()); }} </ユーザー>
测试一下:
public class Test{ public static void main(String[] args) { ユーザー user1 = new User(); user1.setName("a"); user1.setOrder(1);ユーザー user2 = 新しいユーザー(); user2.setName("b"); user2.setOrder(2);リスト <ユーザー> list = new ArrayList <ユーザー> (); //ここはadd user2再add user1 list.add(user2); list.add(user1);コレクション.sort(リスト); for(User u : list){ System.out.println(u.getName()); } }} </user> </user>
出た結果は以下の通り
ある
b
2 番目の方法は、Collections.sort 重ロード メソッドに基づいて実行されます。例:
/*** 準拠順序对User排序*/public class User { //此处不要实现Comparableインターフェイス private String name;プライベート整数順序。 public String getName() { 名前を返します。 public void setName(String name) { this.name = 名前; public Integer getOrder() { 順序を返します。 public void setOrder(Integer order) { this.order = order; }}
主科中这样写即可:
public class Test{ public static void main(String[] args) { ユーザー user1 = new User(); user1.setName("a"); user1.setOrder(1);ユーザー user2 = 新しいユーザー(); user2.setName("b"); user2.setOrder(2);リスト <ユーザー> list = new ArrayList <ユーザー> (); list.add(user2); list.add(user1); Collections.sort(list,new Comparator <user> (){ public int Compare(User arg0, User arg1) { return arg0.getOrder().compareTo(arg1.getOrder()); } }); for(User u : list){ System.out.println(u.getName()); } }} </user> </user> </user>
出た結果は以下の通り
ある
b
前者コード構造は単一ですが、固定された属性順序に基づいてのみ可能であり、後者は動的に順序を指定できますが、代コードは決定できません
多字段の組み合わせ:
Collections.sort(list,new Comparator <user> (){ public int Compare(User arg0, User arg1) { // 最初の次比较专业 int i = arg0.getOrder().compareTo(arg1.getOrder()); // 結果が同じであれば 2 番目の比を実行します if(i==0){//第二比较 int j=arg0.getXXX().compareTo(arg1.getXXX());// 如果学制同様返還按年龄排序 if(j==0){ return arg0.getCCC().compareTo(arg1 .getCCC()); } j を返す } }); </ユーザー>
上記の内容は、Java セットに関連する大規模なメディアでの Collections.sort メソッドのリスト排列 (2 つのメソッド) をどのように処理するかについてであり、大家にとって役立つことが望ましいです。