Comparable接口中compareTo用法

compareTo就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1,我下面给出了例子,由于比较的变量我用的是int,int型可以直接比较,所有没有用到compareTo比较,如果声明的是Date、String、Integer或者其他的,可以直接使用compareTo比较,

	public int compareTo(TestModel1 o) {
		return this.str1.compareTo(o.str1);
	}


compateTo方法内必须做非空判断(规范问题),当然int类型就不用了。

注意事项:

        1模型必须实现Comparable<T>接口

        2Collections.sort(list);会自动调用compareTo,如果没有这句,list是不会排序的,也不会调用compareTo方法

        3如果是数组则用的是Arrays.sort(a)方法

代码如下:

package test;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        List<TestModel1> list = new ArrayList<TestModel1>();
        list.add(new TestModel1(1,"",""));
        list.add(new TestModel1(3,"",""));
        list.add(new TestModel1(2,"",""));
        list.add(new TestModel1(6,"",""));
        list.add(new TestModel1(9,"",""));
        list.add(new TestModel1(7,"",""));
        System.out.print("排序前:");
        for (TestModel1 t : list) {
            System.out.print(t.getInteger()+" ");
        }
        Collections.sort(list);//自动调用compareTo
        System.out.print("\n排序后:");
        for (TestModel1 t : list) {
            System.out.print(t.getInteger()+" ");
        }
    }
}

package test;
 
public class TestModel1 implements Comparable<TestModel1>{
    private int integer;
    private String str1;
    private String str2;
    public int getInteger() {
        return integer;
    }
    public void setInteger(int integer) {
        this.integer = integer;
    }
    public String getStr1() {
        return str1;
    }
    public void setStr1(String str1) {
        this.str1 = str1;
    }
    public String getStr2() {
        return str2;
    }
    public void setStr2(String str2) {
        this.str2 = str2;
    }
    public TestModel1(Integer integer, String str1, String str2) {
        super();
        this.integer = integer;
        this.str1 = str1;
        this.str2 = str2;
    }
    public int compareTo(TestModel1 o) {
        if(this.integer<o.integer)return -1;
        else if(this.integer==o.integer)return 0;
        else return 1;
    }
}


效果如下:


————————————————
版权声明:本文为CSDN博主「zou_hailin226」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zou_hailin226/article/details/8919781

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值