日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对List集合中的元素进行排序

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对List集合中的元素进行排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

ollections對List集合中的數據進行排序

有時候需要對集合中的元素按照一定的規則進行排序,這就需要用到

Java中提供的對集合進行操作的工具類Collections,其中的sort方法

?

先看一個簡單的例子:

?

[java]?view plain?copy
  • public?static?void?main(String[]?args)?{??
  • ????List<Integer>?nums?=?new?ArrayList<Integer>();??
  • ????????nums.add(3);??
  • ????????nums.add(5);??
  • ????????nums.add(1);??
  • ????????nums.add(0);??
  • ????????System.out.println(nums);??
  • ????????Collections.sort(nums);??
  • ????????System.out.println(nums);??
  • }??
  • 輸出結果:
    [3, 5, 1, 0]
    [0, 1, 3, 5]

    稍微復雜的List里面放一個復雜的對象

    ?

    [java]?view plain?copy
  • package?core.java.collection.collections;??
  • ??
  • public?class?User?implements?Comparable<User>{??
  • ??????
  • ????private?int?score;??
  • ??????
  • ????private?int?age;??
  • ??????
  • ????public?User(int?score,?int?age){??
  • ????????super();??
  • ????????this.score?=?score;??
  • ????????this.age?=?age;??
  • ????}??
  • ??
  • ????public?int?getScore()?{??
  • ????????return?score;??
  • ????}??
  • ??
  • ????public?void?setScore(int?score)?{??
  • ????????this.score?=?score;??
  • ????}??
  • ??
  • ????public?int?getAge()?{??
  • ????????return?age;??
  • ????}??
  • ??
  • ????public?void?setAge(int?age)?{??
  • ????????this.age?=?age;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?int?compareTo(User?o)?{??
  • ????????int?i?=?this.getAge()?-?o.getAge();//先按照年齡排序??
  • ????????if(i?==?0){??
  • ????????????return?this.score?-?o.getScore();//如果年齡相等了再用分數進行排序??
  • ????????}??
  • ????????return?i;??
  • ????}??
  • ??????
  • }??
  • ??
  • public?static?void?main(String[]?args)?{??
  • ????????List<User>?users?=?new?ArrayList<User>();??
  • ????????users.add(new?User(78,?26));??
  • ????????users.add(new?User(67,?23));??
  • ????????users.add(new?User(34,?56));??
  • ????????users.add(new?User(55,?23));??
  • ????????Collections.sort(users);??
  • ????????for(User?user?:?users){??
  • ????????????System.out.println(user.getScore()?+?","?+?user.getAge());??
  • ????????}??
  • }??
  • 輸出結果:
    55,23
    67,23
    78,26
    34,56
    我們會發現sort(List<T>)方法中List中的T必須實現Comparable<T>接口,然后實現
    compareTo()方法,該方法的返回值0代表相等,1表示大于,-1表示小于;為什么
    在簡單例子中沒有看到實現Comparable接口呢?是因為Integer類其實自己已經實現
    了Comparable接口,Java已經給我們做好了。

    Collections提供的第二種排序方法sort(List<T> list, Comparator<? super T> c)
    先看例子:

    ?

    [java]?view plain?copy
  • package?core.java.collection.collections;??
  • ??
  • public?class?Students?{??
  • ??????
  • ????private?int?age;??
  • ????private?int?score;??
  • ??????
  • ????public?Students(int?age,?int?score){??
  • ????????super();??
  • ????????this.age?=?age;??
  • ????????this.score?=?score;??
  • ????}??
  • ??????
  • ????public?int?getAge()?{??
  • ????????return?age;??
  • ????}??
  • ????public?void?setAge(int?age)?{??
  • ????????this.age?=?age;??
  • ????}??
  • ????public?int?getScore()?{??
  • ????????return?score;??
  • ????}??
  • ????public?void?setScore(int?score)?{??
  • ????????this.score?=?score;??
  • ????}??
  • }??
  • public?static?void?main(String[]?args)?{??
  • ????????List<Students>?students?=?new?ArrayList<Students>();??
  • ????????students.add(new?Students(23,?100));??
  • ????????students.add(new?Students(27,?98));??
  • ????????students.add(new?Students(29,?99));??
  • ????????students.add(new?Students(29,?98));??
  • ????????students.add(new?Students(22,?89));??
  • ????????Collections.sort(students,?new?Comparator<Students>()?{??
  • ??
  • ????????????@Override??
  • ????????????public?int?compare(Students?o1,?Students?o2)?{??
  • ????????????????int?i?=?o1.getScore()?-?o2.getScore();??
  • ????????????????if(i?==?0){??
  • ????????????????????return?o1.getAge()?-?o2.getAge();??
  • ????????????????}??
  • ????????????????return?i;??
  • ????????????}??
  • ????????});??
  • ????????for(Students?stu?:?students){??
  • ????????????System.out.println("score:"?+?stu.getScore()?+?":age"?+?stu.getAge());??
  • ????????}??
  • }??
  • 輸出結果:
    score:89:age22
    score:98:age27
    score:98:age29
    score:99:age29
    score:100:age23

    從上面的例子我們可以看出Students類沒有實現Comparable<T>接口,只是在sort()方法
    中多傳入一個參數,只不過該參數是一個接口我們需要實現其compare方法。

    以上就是是Java中Colelctions工具類為我們提供的兩種集合排序方法。

    ?

    總結

    以上是生活随笔為你收集整理的对List集合中的元素进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。