生活随笔
收集整理的這篇文章主要介紹了
对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集合中的元素进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。