對List集合中的元素進行排序
有時候需要對集合中的元素按照一定的規則進行排序,這就需要用到
Java中提供的對集合進行操作的工具類Collections,其中的sort方法
先看一個簡單的例子:
輸出結果: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裡面放一個複雜的物件
輸出結果: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)
先看例子:
輸出結果: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集合中物件日期排序
程式碼直接用就好! 傳入一個 集合物件 ,我的bean中時間屬性是 date 型別; private static void ListSort(List<JzdtInfo> list) { { //排序方法 Collections.sort(lis
2018.9.26 如何對List集合中的元素進行排序?
lec str 有時 etag gets sets ava int private Collections對List集合中的數據進行排序 有時候需要對集合中的元素按照一定的規則進行排序,這就需要用到 Java中提供的對集合進行操作的工具類Collections,其中的sor
java如何對List集合中的元素進行排序(請收藏)
package www.itxm.net; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class PersonS
對List集合中的元素進行排序
Collections對List集合中的資料進行排序 有時候需要對集合中的元素按照一定的規則進行排序,這就需要用到 Java中提供的對集合進行操作的工具類Collections,其中的sort方法 先看一個簡單的例子: public static void main(St
對list集合中的物件 進行排序
根據觀看次數的多少排序 ( resultList集合中是IndexCardResult物件,通過IndexCardResult中的屬性viewNum的多少對集合排序) Collections.sort(resultList,new Comparator<IndexCardResult>
如何對List集合中的物件進行按某個屬性排序
我們在實際的開發工作中,經常會碰到排序的問題,如題,我們如何針對List集合中的某一個屬性進行排序先舉一個簡單的例子:package test; import java.util.ArrayList; import java.util.List; import java.u
在java中對LIst集合的兩種排序方法(即sort的使用方法)
List集合的排序: java提供了兩種排序方式,分別是Collections.sort(List)和Collections.sort(List,Commparator),下面就這兩種方法的使用做詳細的說明: -Collections.sort(List); sort的引數是一
c++ 對vector中元素進行排序,查詢,返回下標的方法
排序 對vector中的元素進行排序 使用標頭檔案algorithm中的sort可以對vector中的元素進行從小到大排序。使用方法為: #include<vector> #include<algorithm> #
利用redis快取對 list集合中的資料 進行分頁操作(一)
先說 儲存的結構: 這裡做了兩塊快取 綠色是儲存索引的快取 黑色是存資料的快取 翻頁時需要兩個引數 向上查詢/或向下查詢 還一個是 從第二頁開始查詢時需要一個索引的引數 有了這兩個引數 就可以利用redis 中提供的方法進行操作 第一個是 jedis.z
Java-對list裡面的元素進行氣泡排序
public class Student{ privete String studentNo; private String studentName; .... } public List<St
對List集合中的資料進行去重操作
======================== 說明:我使用的方法是將list集合中的資料遍歷後,然後丟到set集合中。(原因就是set集合中不能儲存重複的資料),雖然這個方法比較笨,但至少暫時是可以使用的。。。這裡要注意的是,如果是判斷物件是否重複,那麼在那個物件中需要
Comparator 對list按照某個屬性進行排序
List<Node> list =new ArrayList<Node>(); Collections.sort(kdAndKnList, new LofComparator()); class LofComparator implements Co
JDK1.7和1.8中List集合中sort方法排序問題【JAVA】
上次做專案的過程中遇到一個對list集合排序的問題,一直困擾著我,後來一直到最後找了半天才發現問題所在。 因為我本機上JDK版本是1.8 ,而伺服器中JDK版本是1.7,因此線上下測試的過程中跑資料都好好地, 而到了線上卻總是出現問題,後來查詢很多文章才予以解決,現在特地記
一個棧,只提供push,pop,top,empty四種操作(這四種操作就是C++標準裡的操作),對該棧的元素進行排序
#include<stack> #include<stdio.h> #include<stdlib.h> using namespace std; stack<
Java中對List集合內的元素進行順序、倒序、隨機排序的示例程式碼
import java.util.Collections; import java.util.LinkedList; import java.util.List; public class Test { List list = new LinkedLis
list集合如何對裏面的元素進行排序
匿名 src .cn .so com image turn cnblogs 公共類 Collections 是集合的公共類,提供各種工具,其中提供了排序方法。 Collections.sort(),方法兩個參數,1,要排序的集合,2.排序方式 下面是匿名內部類,實現了排序借
對集合中的元素進行排序,接口Comparator<T>和Comparable<T>的使用
pub length 自定義 長度 public bsp imp ide 抽象類 關於比較排序比較的接口 或者是類有:java.lang.Comparable<T>接口, 一個抽象類通過實現這個接口可以進行自然排序,也就是一個如果一個自定義類通過implemen
Java中對list集合進行排序
原文連結 /** * 根據order對User排序 */ public class User { //此處無需實現Comparable介面 private String name; private Integer order; public Str
【轉載】C#中使用OrderBy和ThenBy等方法對List集合進行排序
derby 轉載 排序。 sha esc ews 個人 類的定義 orderby 在C#的List操作中,針對List對象集合的排序我們可以使用OrderBy、OrderByDescending、ThenBy、ThenByDescending等方法按照特定的對象屬性進行排序
根據List集合中的對象屬性排序
his return nts 類型 sin 屬性 ppr 圖片 compareto 首先創建一個Student對象,裏面有三個屬性,分別是int類型,String類型,Date類型 package com.sinoway.cisp.test; import java.t