1. 程式人生 > >對List集合中的元素進行排序

對List集合中的元素進行排序

Collections對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

在javaLIst集合的兩種排序方法(即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.8List集合sort方法排序問題【JAVA】

上次做專案的過程中遇到一個對list集合排序的問題,一直困擾著我,後來一直到最後找了半天才發現問題所在。 因為我本機上JDK版本是1.8 ,而伺服器中JDK版本是1.7,因此線上下測試的過程中跑資料都好好地, 而到了線上卻總是出現問題,後來查詢很多文章才予以解決,現在特地記

JavaList集合內的元素進行順序、倒序、隨機排序的示例程式碼

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

Javalist集合進行排序

原文連結 /** * 根據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