JAVA中传统接口形式_Java中java.util.Comparator接口使用方式说明

java.util.Comparator是比较器接口,如果我们需要控制某个类的次序并且该类本身不支持排序,那么就可以建立一个类比较器来进行排序,实现方式很简单只需要实现java.util.Comparator接口。

java.util.Comparator接口只包括两个函数,它的源码如下:package java.util;

public interface Comparator {

int compare(T o1, T o2);

boolean equals(Object obj);

}

1) 若一个类要实现java.util.Comparator接口:它一定要实现int compare(T o1, T o2) 函数,而另一个可以不实现boolean equals(Object obj) 函数

2)int compare(T o1, T o2) 是比较o1和o2的大小

如果返回值为负数意味着o1比o2小,否则返回为零意味着o1等于o2,返回为正数意味着o1大于o2

下面我简单举例演示比较集合内对象数字大小,其中实体类,具体代码如下:package com.yoodb;

/**

* 素文宅 www.yoodb.com

*/

public class Number {

private int a;

private int b;

public int getB() {

return b;

}

public void setB(int b) {

this.b = b;

}

public int getA() {

return a;

}

public void setA(int a) {

this.a = a;

}

}

实现java.util.Comparator接口具体代码如下:package com.yoodb;

import java.util.Comparator;

/**

* 素文宅 www.yoodb.com

*/

public class NumberComparator implements Comparator{

@Override

public int compare(Number o1, Number o2) {

// TODO Auto-generated method stub

System.out.println("a1->" + o1.getA() +"     "+ "a2->" + o2.getA());

System.out.println("结果值---->" + (o2.getA() - o1.getA()));

return o2.getA() - o1.getA();

}

}

本地应用测试,具体代码如下:package com.yoodb;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

/**

* 素文宅 www.yoodb.com

*/

public class NumberTest {

public static void main(String[] args) {

List list = new ArrayList();

Number nb = new Number();

nb.setA(6);

nb.setB(1);

list.add(nb);

nb = new Number();

nb.setA(7);

nb.setB(3);

list.add(nb);

NumberComparator ct = new NumberComparator();

Collections.sort(list, ct);

if(list != null && list.size() > 0){

for(Number nr : list){

System.out.println("a->" + nr.getA() +"     "+ "b->" + nr.getB());

}

}

}

}

运行结果如下:a1->7     a2->6

结果值---->-1

a->7     b->3

a->6     b->1

java.util.Comparator接口中降序升序,可以这样理解:

假如A的值大于B,你返回1,此时调用Collections.sort()函数就是升序;假如A的值大于B,你返回-1,此时调用Collections.sort()函数就是降序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值