1. 程式人生 > >Collections.sort 重寫compare()方法

Collections.sort 重寫compare()方法

Comparator是個介面,主要比的是兩個物件,比較規則是自己寫的,可以重寫他的compare()和equals()這兩個方法,也就是說比較的方法。如果是Null的話,就是使用元素的自然順序,如1 3 2 4就是1 2 3 4 。字母也可以compare(a,b)方法:根據第一個引數小於、等於或大於第二個引數分別返回負整數、零或正整數。

Test.java

package com.djcken;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.djcken.UserBean.ComparatorUser;

public class Test 
{
	public static void main(String[] args){             
	
		List userlist=new ArrayList();             
		  userlist.add(new UserBean("d","1"));             
		  userlist.add(new UserBean("a","4"));             
		  userlist.add(new UserBean("e","5"));             
		  userlist.add(new UserBean("b","2"));               
		  userlist.add(new UserBean("f","5"));             
		  userlist.add(new UserBean("c","3"));             
		  userlist.add(new UserBean("g","6"));             
		               
		  ComparatorUser comparator= new ComparatorUser();         
		  Collections.sort(userlist, comparator);             
		                
		  for (int i=0;i<userlist.size();i++){             
			  UserBean user_temp=(UserBean)userlist.get(i);             
		      System.out.println(user_temp.getAge()+","+user_temp.getName());              
		  }                 
		 }             
}

UserBean.java
package com.djcken;

import java.util.Comparator;

public class UserBean
{
	private String age;
	private String name;
	
	public UserBean(String age, String name) {
		super();
		this.age = age;
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public static class ComparatorUser implements Comparator{

		public int compare(Object o1, Object o2) {
			UserBean user0 = (UserBean) o1;
			UserBean user1 = (UserBean) o2;
			int thislv = user0.getAge().compareTo(user1.getAge());
			if (thislv == 0) {
				return user0.getName().compareTo(user1.getName());
			} else {
				return thislv;
			}
		}
	} 
}

結果:

1,d
2,b
3,c
4,a
5,e
5,f
6,g

相關推薦

Collections.sort 重寫compare方法

Comparator是個介面,主要比的是兩個物件,比較規則是自己寫的,可以重寫他的compare()和equals()這兩個方法,也就是說比較的方法。如果是Null的話,就是使用元素的自然順序,如1

List排序Collections.sort 重寫compare

1 static List<Integer> intList = Arrays.asList(2,5,7, 3, 1); 2 3 public static void main(String[] args) { 4 5

為什麼在重寫equals方法時,一般都會重寫HashCode方法

重寫equals()方法主要是為了方便比較兩個物件內容是否相等。hashCode()方法用於返回呼叫該方法的物件的雜湊碼值,此方法將返回整數形式的雜湊碼值。 一個類如果重寫了 equals()方法,通常也有必要重寫 hashCode()方法,目的是為了維護hashCode()方法的常規協定,

重寫toString方法

 學習Java的人都知道,Java所有類都是object的子類。所以,所有的Java物件都可以呼叫object類提供的方法。其中,toString()就是其中一個。下面講解一下為什麼會有重寫toString()方法一說。 首先,我們先來建立一個Persion類,它只簡

Collections.sort方法和lambda表示式結合實現集合的排序

1.使用Collections.sort()實現集合的排序,這裡的方法具體指的是:   Collections.sort(List list, Compatator c)       第一個引數:為要進行排序的集合。     第二個引數:Compatator的實現,指定排序的方式。   2

java的Collections.sort方法使用

conllections.sort()可以排序List、List、List<包裝類>,還可以是List<自定義的物件> (一)通過Collections.sort()方法,對i

ArrayList排序Sort方法(轉)

ray list pro 簡單 read 排序 adl array 簡單的 //使用Sort方法,可以對集合中的元素進行排序。Sort有三種重載方法,聲明代碼如下所//示。 public void Sort(); //使用集合元素的比較方式進行排序 public vo

在定義類時,何時需要重寫Object類中equals方法

在比較兩個物件時可以使用==和 equals()。==用於比較兩個物件的引用地址是否相等,而equals()方法主要用於比較兩個物件的內容是否相等。和equals()的差別請參見“和equals()有什麼區別?”的解答。 在 Object 中已定義了 equals()方法,但是該方法直接採用

初學者對js中sort方法的理解。

定義和用法 sort() 方法用於對陣列的元素進行排序。 語法 arrayObject.sort(sortby) 引數 描述 sortby 可選。規定排序順序。必須是函式。 返回值 對陣列的引用。請注意,陣列在原陣列上進行排序,不生成副本。 說明 如果

js中sort方法的用法,引數以及排序原理

sort() 方法用於對陣列的元素進行排序。 語法:arrayObject.sort(sortby);引數sortby可選。規定排序順序。必須是函式。 注:如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字

通過重寫Thread的run方法顯示新執行緒

前面提到過有一種Runnable介面顯示執行緒的方法,還有一種是通過重寫Thread的run()方法顯示的: 首先定義一個類繼承Thread類,然後重寫run()方法 public class TestThread { public static void main(

Java中關於==和equal的區別以及equals方法重寫

例子i: string1="aaa"; string2="aaa"; String string3=new String("aaa"); String string4=new String("aaa"); string1==string2 // true; . string1.equals(string2)

js寫css方法,記得加引號“ ”,除非是數字

pos 引號 index size z-index roi absolut fff dex js寫css()方法,記得加引號“ ”,除非是數字。如: $("#android").css({ "position": "absolute", "z-index":

ArrayList中remove方法刪除長度大於5的元素之後下標重定位的問題

com 有一個 fad 就刪除 成了 位置 p s cnblogs 中心 1、問題闡述 需求: 有一個ArrayList數組,要求刪除長度大於5的字符串,如:arr = {"ab1","123ad","bca","dadfadf","dddaaa","你好啊","我來

== 與 equals方法的區別

return 使用 自定義類 [] true 適用於 內容 lean 編譯 * equals()方法的使用 * * 1.java.lang.Object類中的equals()方法的定義: * * public boolean equals(Object obj

createTextNode() 方法和createTextNode方法

script 屬性 tno tle html creat uno 按鈕 文本節點 <!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoo

seek方法的使用

sheng aaa pla () 有時 lose ans adding ati seek()方法用於移動文件讀取指針到指定位置。 file.seek()方法標準格式是:file.seek(offset,whence) offset:開始的偏移量,也就是代表需要移動偏

使用seek方法報錯:“io.UnsupportedOperation: can't do nonzero cur-relative seeks”錯誤的原因

pac nbsp mar std orm ack logs 打開文件 off 在使用seek()函數時,有時候會報錯為 “io.UnsupportedOperation: can‘t do nonzero cur-relative seeks”,代碼如下: >&g

Java集合框架上機練習題:編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo方法.....

ext .cn 數據庫 識別 方法 屬性 set package compareto 編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo()方法中規定兩個Book類實例的大小關系為二者的price屬性的

關於vlookup方法的使用

精準 相同 lookup div 其他 nbsp 公式 class 步驟 問題: A表中A列與B表中的A列作對比,相同的,將B表的B列放到A表的b列上 如: A表 A B 張三 歷史 王五 化學 地理 B表 A B 張三