1. 程式人生 > >Comparable介面排序

Comparable介面排序

實現Comparable介面,並實現該介面下的compareTo()方法, 再使用Collections.sort()重新排序,就可以得到自己想要的順序。


public class UserInfo implements Comparable<UserInfo> {


	private String userName;
	private int userAge;


	public UserInfo(String userName, int userAge) {
		this.userName = userName;
		this.userAge = userAge;
	}


	public String getUserName() {
		return userName;
	}


	public void setUserName(String userName) {
		this.userName = userName;
	}


	public int getUserAge() {
		return userAge;
	}


	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}


	@Override
	public int compareTo(UserInfo o) {
		return this.userAge - o.getUserAge();
	}


}


	public static void main(String[] args) {


		UserInfo user2 = new UserInfo("22", 22);
		UserInfo user1 = new UserInfo("20", 20);
		UserInfo user3 = new UserInfo("24", 24);


		ArrayList<UserInfo> userList = new ArrayList<UserInfo>();
		userList.add(user1);
		userList.add(user2);
		userList.add(user3);


		Collections.sort(userList);


		for (UserInfo userInfo : userList) {
			System.out.println(userInfo.getUserName());
		}
	}

java.util.Collections是一個包裝類,它包含各種集合相關的操作的靜態多型方法,次類不能例項化,
它就相當於一個工具類。

需要注意的是,java.util.Collection是一個集合的介面,雖然兩個只是相差一個s,但是功能完全不一樣。

在Collections的sort()方法中,如果使用者實現了Comparable介面,該工具類將直接呼叫重寫的compareTo方法。Collections中的sort()方法的實現是:

	public static <T extends Comparable<? super T>> void sort(List<T> list) {
		Object[] a = list.toArray();
		Arrays.sort(a);
		ListIterator<T> i = list.listIterator();
		for (int j = 0; j < a.length; j++) {
			i.next();
			i.set((T) a[j]);
		}
	}

相關推薦

Comparable介面 排序

compareTo返回值為-1 、 1 、 0 的排序問題 1.什麼是Comparable介面 此介面強行對實現它的每個類的物件進行整體排序。此排序被稱為該類的自然排序 ,類的 compareTo 方法被稱為它的自然比較方法 。實現此介面的物件列表(和陣列)可以通過 Collection

Comparable介面排序

實現Comparable介面,並實現該介面下的compareTo()方法, 再使用Collections.sort()重新排序,就可以得到自己想要的順序。 public class UserInfo implements Comparable<UserInfo>

JAVA 利用Arraylist.sort()進行排序的實現。(comparable介面的實現)

1.什麼是Comparable介面 此介面強行對實現它的每個類的物件進行整體排序。此排序被稱為該類的自然排序 ,類的 compareTo 方法被稱為它的自然比較方法 。實現此介面的物件列表(和陣列)可以通過 Collections.sort (和 Arrays.sort )進行自動排序。實現此介面的

java的Comparable介面實現自定義排序

除了利用資料庫的sql語句排序還可以利用java的Comparable介面自定義排序。 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Emplo

Java中類的比較與排序方法(應用Comparable介面與Comparator介面)

引言 在平時寫Java的程式的時候,如果要進行一些基本型別的變數的比較,可以很方便得呼叫’Math.max()’、Math.min()等方法,如果要對陣列或者列表進行排序,也可以用Arrays.sort()和Collections.sort()等已經封裝好的方法來進行。但是,如果是一個自

Comparable介面實現集合的排序

1.讓需要排序的物件實現Comparable介面,並重寫compareTo方法 public class Student implements Comparable<Student> {  //泛型為需要排序的物件   

關於Comparable介面和Comparetor介面的兩種排序

Comparable介面 TreeSet:實現去重和排序的方式:1.讓元素去實現Comparable介面,重寫compareTo方法 public class Demo { public static void main(String[] args) {

程式實現對資料排序並按出現次數進行排序 程式實現對資料排序並按出現次數進行排序(注:用面向物件的方式實現,用for迴圈進行排序,別用comparable介面實現){1,4,2,1,3,2,1,4}作為

程式實現對資料排序並按出現次數進行排序 程式實現對資料排序並按出現次數進行排序(注:用面向物件的方式實現,用for迴圈進行排序,別用comparable介面實現){1,4,2,1,3,2,1,4}作為引數(引數可變)傳入java方法中,控制檯輸出以下結果 1出現了3次 2出現了2次

ArrayList容器排序 comparator介面comparable介面的使用

1、實體類實現comparable介面,重寫compareTo方法 package io; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDate

Arrays.sort排序方法以及Comparator和Comparable介面的作用

有的時候需要對數組裡的element進行排序。當然可以自己編寫合適的排序方法,但既然Java包裡有自帶的Arrays.sort排序方法,在陣列元素比較少的時候為何不用?   Sorting an Array 1. 數字排序  int[] intArray = new i

物件排序,實現comparable介面

定義: Comparable & Comparator 都是用來實現集合中的排序的,只是 Comparable 是在集合內部定義的方法實現的排序,Comparator 是在集合外部實現的排序,所以,如想實現排序,就需要在集合外定義 Comparator

java實現自定義排序(實現Comparable介面

        排序的演算法,大家都不陌生,有氣泡排序、選擇排序、插入排序,快速排序等等。如果現在有學生類,學校添加了很多學生,要你給學生按照學號大小排序,你會怎麼排? 學生類   Student {int stuID;    String stuName;   int sc

實現Comparable介面,把物件按優先順序進行排序

在讀《efficitive java》第12條:考慮實現Comparable介面 使用Comparable介面按物件按屬性的優先順序排序還是比較方便的 例項程式碼 package com.ct

Java排序 Comparable(實現Comparable介面

1、首先新建第一個Student類/** * 排序測試 通過實現Comprable的compareTo方法進行排序 */public class Student implements Comparable<Student>{ private String n

java 對ArrayList排序,實現Comparable介面

import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io

Java中實現Comparable介面和Comparator介面排序演算法效率比較

在PAT Basic Level的真題中,有”德才論“這麼一題(點選可開啟題目)。 最開始我是構造了一個學生類,存放學生資訊,實現Comparator介面,遺憾的是,後臺測試時,每一個測試用例皆顯示程式執行超時。 public class Main ... class S

物件排序之Comparator,Comparable介面區別(華為面試題)

給了個類,要求編寫一段程式碼,給以下型別的資料排序(按index降序排): public class A{   public int index ;    public String str;   public …… ; } 條件: 1.資料量很大,要求效能夠; 2.擴充套件性好:按其他資料型別(如 Stri

Java程式設計之TreeSet排序兩種解決方法(1)元素自身具備比較功能,元素需要實現Comparable介面覆蓋compare(2)建立根據自定義Person類的name進行排序的Comparator

       當很多人問我讀研到底好不好的時候,我總是說上研很苦逼,讀完研之後都不知道自己能不能找到工作,所以不建議同學們讀研~即使要讀也讀一個985或者211的研究生,這是我肺腑之言。但還有一半我沒說完,讀研的時候你可能會找到你喜歡的活動,會遇到一些願意和你一起玩的玩伴,

javaBean實現Comparable介面排序

今天在做專案時,需要根據序號排序,然而序號是在java中通過邏輯處理賦值的並不是直接在sql中通過order by 解決的;而ArrayList沒有實現Comparable介面,不能實現按需要排序; <span style="font-family:Microsof

重寫hashcode和equals方法,以及加入treeset實現comparable介面重寫compareTo方法

package Interview; import java.util.*; class People implements Comparable<People> { public String name; public int age; public People(Str