導航:首頁 > 編程語言 > 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相關的資料

熱點內容
女主角叫米亞的恐怖片 瀏覽:904
男孩縮小在魚缸里 動漫 瀏覽:111
請檢查文件內容是否正確 瀏覽:109
word轉pdf大文件怎麼打開 瀏覽:447
不顯示u盤文件怎麼回事 瀏覽:691
想^_^香港看啪啪視頻 瀏覽:496
qq群贊賞照片不見了 瀏覽:187
不要錢免費看電影網站 瀏覽:425
u盤刪除文件可以恢復嗎 瀏覽:138
在森林槍戰的國產電影 瀏覽:133
食人癖女孩的電影 瀏覽:19
iphone5藍牙聽歌 瀏覽:802
al創世者電影完整版免費2023 瀏覽:303
小說電影免費網站有哪些 瀏覽:567
應城市網站到期怎麼續費 瀏覽:772
360擴展器固件在哪升級 瀏覽:103
青春愛情激情電影 瀏覽:209
韓國電影 女主角在療養院工作 瀏覽:926
javascriptsidebar 瀏覽:769
義烏用什麼app坐公交 瀏覽:14

友情鏈接