導航:首頁 > 編程語言 > javacompartor

javacompartor

發布時間:2021-03-05 15:05:37

java comparator定義規則

一、實體類Step
package com.ljq.entity;

/**
* 運號單流程
*
* @author Administrator
*
*/
public class Step{
/** 處理時間 */
private String acceptTime = "";
/** 快件所在地點 */
private String acceptAddress = "";

public Step() {
super();
}

public Step(String acceptTime, String acceptAddress) {
super();
this.acceptTime = acceptTime;
this.acceptAddress = acceptAddress;
}

public String getAcceptTime() {
return acceptTime;
}

public void setAcceptTime(String acceptTime) {
this.acceptTime = acceptTime;
}

public String getAcceptAddress() {
return acceptAddress;
}

public void setAcceptAddress(String acceptAddress) {
this.acceptAddress = acceptAddress;
}

}

二、實現Comparator介面

package com.ljq.entity;

import java.util.Comparator;
import java.util.Date;

import com.ljq.util.UtilTool;

/**
* 對Step類進行排序
*
* @author Administrator
*
*/
public class StepComparator implements Comparator<Step>{

/**
* 如果o1小於o2,返回一個負數;如果o1大於o2,返回一個正數;如果他們相等,則返回0;
*/
@Override
public int compare(Step o1, Step o2) {
Date acceptTime1=UtilTool.strToDate(o1.getAcceptTime(), null);
Date acceptTime2=UtilTool.strToDate(o2.getAcceptTime(), null);

//對日期欄位進行升序,如果欲降序可採用before方法
if(acceptTime1.after(acceptTime2)) return 1;
return -1;
}

}

三、測試

package junit;

import java.util.Collection;
import java.util.Collections;
import java.util.List;

import org.junit.Test;

public class StepComparatorTest {

@Test
public void sort() throws Exception{
List<Step> steps=new ArrayList<Step>;
//對集合對象進行排序
StepComparator comparator=new StepComparator();
Collections.sort(steps, comparator);
if(steps!=null&&steps.size()>0){
for(Step step:steps){
System.out.println(step.getAcceptAddress());
System.out.println(step.getAcceptTime());
}
}

}
}

Ⅱ java里comparator怎麼給字元串排序

是排序字元抄串裡面的字元嗎,先轉成數組,

char[]
toCharArray()
Converts this string to a new character array.

再使用 java.util.Arrays 的sort方法
static <T> void sort(T[] a,
Comparator<? super T> c)
Sorts the specified array of objects according to the order inced by
the specified comparator.

Ⅲ java Comparator中的返回值和排序有什麼關系啊,求解釋!!!!!

負數代表左值小於右值,排在上面
正數代表左值大於右值,排在下面
0代表回左值等於右值,答排在上面
可以這樣理解:排序就是比較誰大誰小,將小的放在前面,大的放在後面。例如當返回負數的時候,表明第一個數應該排在第二個數的上面。

Ⅳ java中的Comparator

看你數組里存的是什麼類型的數據咯,如果是基礎類型或者java中已經有的對版象類型,就可以直接比較大權小,一般java中的對象類型都已經實現了比較大小的方法。如果是保存自定義的類型,則需要自定義的類型實現Comprable或者Comparator這兩個介面。這兩者的差別可以參考下面的網頁。

Ⅳ java中comparator 介面怎麼比較字元串

理論基礎:
字元串已經實現了Comparable介面,所以在Comparator介面的實現類中只要調用String的compareTo(String str)方法版就可以了。
具體權策略:
返回值等於0說明相等,比較的是Unicode順序,注意如果輸入都是數字與數字比較結果可能不同因為"111"就是排在"2"之前

Ⅵ java中Comparator問題

實現了 Comparator介面(即「比較器」介面,新集合庫的一部分)的一個對象,並用它的單個專
compare()方法進屬行比較。這個方法將兩個准備比較的對象作為自己的參數使用——若第一個參數小於第二
個,返回一個負整數;若相等,返回零;若第一個參數大於第二個,則返回正整數。

Ⅶ java comparator 默認是升序么

comparator 不是介面嗎,可以implement之後重寫它的compare(T o1, T o2)方法實現降序啊(compare方法返回的是一個int型的數值,從小於0,等於0到等於0依次表示的是o1小於o2,o1等於o2,o1大於o2,所以可以反寫邏輯實現降序的,以下是一個按年齡降序列印的例子)

packagehahalan.lianxi;

importjava.util.Arrays;


publicclassPeople{

Stringname;
intage;
publicPeople(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicintgetAge(){
returnage;
}
publicstaticvoidmain(String[]args){
People[]peoples=newPeople[]{newPeople("張三",18),
newPeople("李四",20),newPeople("王五",19)};
System.out.print("排序前:");
for(Peoplepeople:peoples){
System.out.print(people.getName()+":"+people.getAge()+"");
}
System.out.print(" 排序後:");
Arrays.sort(peoples,newPeopleComparator());
for(Peoplepeople:peoples){
System.out.print(people.getName()+":"+people.getAge()+"");
}
}

}packagehahalan.lianxi;

importjava.util.Comparator;


<People>{

@Override
publicintcompare(Peopleo1,Peopleo2){
returno2.getAge()-o1.getAge();
}

}

列印結果為:

排序前:張三:18 李四:20 王五:19

排序後:李四:20 王五:19 張三:18

Ⅷ 關於java使用Comparator多列數據升序、降序排列的問題。哪位大俠能解決

list中放的是對象吧。
重寫一下compare方法就行啊。
一個多if判斷的問題,
升序代碼

如果版(產品好權相等){
升序代碼

如果(會員號相等){
升序代碼
如果(客戶號相等){
降序代碼
如果(順序號相等){
}

}

}

}
升序和降序其實就是a>b是return 1還是return -1 的事。
如果需要代碼就接著追問。

Ⅸ Java中Comparator介面的用法

在java編程中,如果要對集合對象或數組對象進行排序,需要實現Comparator介面以達到目標,用法如下(模擬下在集合對象中對日期屬性進行排序):

一、實體類Step

packagecom.ljq.entity;
/**
*運號單流程
*
*@authorAdministrator
*
*/
publicclassStep{
/**處理時間*/
privateStringacceptTime="";
/**快件所在地點*/
privateStringacceptAddress="";

publicStep(){
super();
}
publicStep(StringacceptTime,StringacceptAddress){
super();
this.acceptTime=acceptTime;
this.acceptAddress=acceptAddress;
}
publicStringgetAcceptTime(){
returnacceptTime;
}
publicvoidsetAcceptTime(StringacceptTime){
this.acceptTime=acceptTime;
}
publicStringgetAcceptAddress(){
returnacceptAddress;
}
publicvoidsetAcceptAddress(StringacceptAddress){
this.acceptAddress=acceptAddress;
}
}

二、實現Comparator介面

packagecom.ljq.entity;
importjava.util.Comparator;
importjava.util.Date;
importcom.ljq.util.UtilTool;
/**
*對Step類進行排序
*
*@authorAdministrator
*
*/
<Step>{

/**
*如果o1小於o2,返回一個負數;如果o1大於o2,返回一個正數;如果他們相等,則返回0;
*/
@Override
publicintcompare(Stepo1,Stepo2){
DateacceptTime1=UtilTool.strToDate(o1.getAcceptTime(),null);
DateacceptTime2=UtilTool.strToDate(o2.getAcceptTime(),null);
//對日期欄位進行升序,如果欲降序可採用before方法
if(acceptTime1.after(acceptTime2))return1;
return-1;
}
}

三、代碼測試

packagejunit;
importjava.util.Collection;
importjava.util.Collections;
importjava.util.List;
importorg.junit.Test;
publicclassStepComparatorTest{
@Test
publicvoidsort()throwsException{
List<Step>steps=newArrayList<Step>;
//對集合對象進行排序
StepComparatorcomparator=newStepComparator();
Collections.sort(steps,comparator);
if(steps!=null&&steps.size()>0){
for(Stepstep:steps){
System.out.println(step.getAcceptAddress());
System.out.println(step.getAcceptTime());
}
}
}
}
閱讀全文

與javacompartor相關的資料

熱點內容
廣西廣電網路的默認ip 瀏覽:191
政府發紅頭文件內容會實現嗎 瀏覽:552
騰訊貴安七星數據中心英文怎麼寫 瀏覽:489
玩火的女孩有幾個版本 瀏覽:113
tvshowtracker安卓版 瀏覽:983
App數據分析應該從哪些緯度 瀏覽:17
到底要不要升級ios92 瀏覽:875
cad2014安裝包安裝文件在哪裡 瀏覽:63
電信密碼無法登錄 瀏覽:820
cad的列印到文件怎麼設置 瀏覽:902
智行app鉑金會員怎麼還有期限 瀏覽:581
win10用子文件夾改名 瀏覽:234
ae鋼筆工具在哪裡 瀏覽:460
gn105數據線插哪裡 瀏覽:916
破鎖屏密碼方法 瀏覽:835
股票數據放哪裡 瀏覽:576
m格式庫文件 瀏覽:279
天際通數據服務怎麼開票 瀏覽:430
寫小說發哪個網站比較好 瀏覽:244
小米電視3藍牙文件路徑 瀏覽:111

友情鏈接