导航:首页 > 编程语言 > 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相关的资料

热点内容
主角老二被蛇咬的小说 浏览:498
电影院评价在哪里看 浏览:85
kk3影院 浏览:817
小电影从哪里看 浏览:514
下载电影的好网址11153 浏览:107
花都之乱txt下载 浏览:891
韩国孕妇生孩子电视剧大肚子 浏览:389
主角把自己母亲收入后宫 浏览:25
李恩美演医生 浏览:326
香港电影女主被救到船上 浏览:527
一个恐怖电影女人被咬掉胸部 浏览:95
分娩风险韩国电影 浏览:528
港台真军电影 浏览:489
红妆刀下留糖全文txt 浏览:495
住在一楼楼的女人韩国电影 浏览:764
阿尔法战士电影全集 浏览:301
穿越到港综鬼片世界的小说 浏览:46
国外网站电影 浏览:79
禁播的电影在什么网站可以看到 浏览:763
真实电影里面的马尾女孩是谁 浏览:352

友情链接