一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 用Java集合中的Collections.sort方法如何對list排序(兩種方法)

用Java集合中的Collections.sort方法如何對list排序(兩種方法)

2020-01-10 17:28mrr' JAVA教程

本文通過兩種方法給大家介紹java集合中的Collections.sort方法對list排序,第一種方式是list中的對象實現Comparable接口,第二種方法是根據Collections.sort重載方法實現,對collections.sort方法感興趣的朋友一起學習吧

第一種是list中的對象實現Comparable接口,如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 根據order對User排序
*/
public class User implements Comparable
   <user>
   {
  private String name;
  private Integer order;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public Integer getOrder() {
    return order;
  }
  public void setOrder(Integer order) {
    this.order = order;
  }
  public int compareTo(User arg0) {
    return this.getOrder().compareTo(arg0.getOrder());
  }
}
   </user>

測試一下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Test{
  public static void main(String[] args) {
    User user1 = new User();
    user1.setName("a");
    user1.setOrder(1);
    User user2 = new User();
    user2.setName("b");
    user2.setOrder(2);
    List
   <user>
    list = new ArrayList
   <user>
    ();
    //此處add user2再add user1
    list.add(user2);
    list.add(user1);
    Collections.sort(list);
    for(User u : list){
      System.out.println(u.getName());
    }
  }
}
   </user>
   </user>

輸出結果如下

a
b

第二種方法是根據Collections.sort重載方法來實現,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 根據order對User排序
*/
public class User { //此處無需實現Comparable接口
  private String name;
  private Integer order;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public Integer getOrder() {
    return order;
  }
  public void setOrder(Integer order) {
    this.order = order;
  }
}

主類中這樣寫即可:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Test{
  public static void main(String[] args) {
    User user1 = new User();
    user1.setName("a");
    user1.setOrder(1);
    User user2 = new User();
    user2.setName("b");
    user2.setOrder(2);
    List
   <user>
    list = new ArrayList
   <user>
    ();
    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>

輸出結果如下

a
b

前者代碼結構簡單,但是只能根據固定的屬性排序,后者靈活,可以臨時指定排序項,但是代碼不夠簡潔

多字段的場合:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Collections.sort(list,new Comparator
   <user>
    (){
      public int compare(User arg0, User arg1) {
 //      第一次比較專業
        int i = arg0.getOrder().compareTo(arg1.getOrder());
//      如果專業相同則進行第二次比較
      if(i==0){
//        第二次比較
        int j=arg0.getXXX().compareTo(arg1.getXXX());
//        如果學制相同則返回按年齡排序
        if(j==0){
          return arg0.getCCC().compareTo(arg1.getCCC());
        }
        return j;
      }
      return i;
      }
    });
   </user>

以上內容就是小編給大家介紹有關用Java集合中的Collections.sort方法如何對list排序(兩種方法),希望對大家有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 俄罗斯美女大逼 | 日本视频一区在线观看免费 | 秋霞宅宅236理论片 秋霞一级黄色片 | 15一16japanese破 | 国产精品思瑞在线观看 | 精品久久久久久久久久久 | 色欧美亚洲 | 久久精品人人做人人爽97 | 四虎精品免费视频 | 麻豆网站视频国产在线观看 | 免费网址视频在线看 | 欧美一区精品 | 亚洲欧美日韩特级毛片 | 交换朋友夫妇3中文字幕 | 亚洲 综合 欧美在线视频 | 欧美夫妇野外交换hd高清版 | avidolz性教师 | 精品区卡一卡2卡三免费 | 久久日本片精品AAAAA国产 | 日韩中文在线 | 亚洲va精品中文字幕 | 99精品久久精品一区二区小说 | 亚州精品永久观看视频 | 九九99靖品 | 久久亚洲成a人片 | 婷婷日日夜夜 | 国产亚洲精品网站 | 爆操女友| 亚洲精品动漫在线观看 | 黑人与欧洲女子性大战 | 白丝校花好湿好紧 | 久久99re2在线视频精品 | sxx免费看视频在线播放 | 关晓彤被调教出奶水 | 无码射肉在线播放视频 | 韩国美女豪爽一级毛片 | 亚洲婷婷在线视频 | 白丝校花好湿好紧 | 男男视频18免费网站 | 亚洲人成网站在线观看播放青青 | 激情影院免费观看 |