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

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

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

  注意事项:

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

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

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

  代码如下:

package test;
import java.util.Collections;
import java.util.List;
public class Test {

public static void main(String[] args) {
      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);//自动调用compareToSystem.out.print("\n排序后:");for (TestModel1 t : list) {System.out.print(t.getInteger()+" ");}}
}

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;}
}

效果如下

转载:https://blog.csdn.net/fengxing11/article/details/53696504

转载于:https://www.cnblogs.com/xianfengzhike/p/10090499.html

java compareTo() 用法注意点相关推荐

  1. java resume过时方法_学点开发|关于Java多线程用法解析

    在进行学习之前,我们先来了解下,什么是Java多线程: 多线程是实现并发机制的一种有效手段.进程和线程一样,都是实现并发的一个基本单位.为了让大家更清晰读懂关于Java多线程用法,由以下几点入手学,帮 ...

  2. java正则表达式用法示例_Java正则表达式教程及示例

    java正则表达式用法示例 当我开始使用Java时,正则表达式对我来说是一场噩梦. 本教程旨在帮助您掌握Java正则表达式,并让我定期返回以刷新我的正则表达式学习. 什么是正则表达式? 正则表达式定义 ...

  3. java list用法_Java List 用法详解及实例分析

    Java List 用法详解及实例分析 Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺 ...

  4. java反射用法示例_Java包| 类型,用法,示例

    java反射用法示例 配套 (Packages) Packages in Java is simply a mechanism to encapsulate (i.e. to put in a sho ...

  5. java反射用法示例_Java反射示例教程

    java反射用法示例 Java Reflection provides ability to inspect and modify the runtime behavior of applicatio ...

  6. Java SimpleDateFormat用法

    1. SimpleDateFormat类 SimpleDateFormat是一个日期格式化类,用来格式化日期. // 构造方法 public SimpleDateFormat(String patte ...

  7. Java split()用法,使用特殊字符要注意了

    Java split()用法,使用特殊字符要使用转义字符. 特殊字符有 * ^ : | . \ 1.单个符号作为分隔符  特殊符号* .split("\\*"); 特殊符号^ .s ...

  8. Java Calendar用法

    1. Calendar初始化 Calendar calendar = Calendar.getInstance(); 默认返回GregorianCalendar实例,在GregorianCalenda ...

  9. Java Formatter用法

    1. Formatter类 1.1 使用方法 Formatter formatter = new Formatter([destination]); formatter.format(String f ...

最新文章

  1. webpack配置alias别名设置
  2. python命令大全-深度学习中python常用命令
  3. [Swift]LeetCode483. 最小好进制 | Smallest Good Base
  4. Circulation:吃鸡蛋量多,死亡风险增加?
  5. js 正则判断用户是否输入表情
  6. [算法][包围盒]AABB简单类
  7. Linux下TCP循环接收数据的方式
  8. python字典(dictionary)中get和items、iteritems方法
  9. Linux开机加载新内核,linux-kernel – 为什么加载内核地址,ramdisk在启动时很重要?...
  10. Spring JtaTransactionManager事务管理
  11. (ensp)华为USG6000v防火墙简单配置
  12. linux怎么查看ip地址
  13. 关于nginx配置负载均衡,nginx.conf配置文件正确,一直跳出nginx欢迎界面
  14. N MOSFET VGS(th)和管子导通的关系
  15. 亚马逊多账号防关联技巧
  16. gucci红包封面怎么抽 gucci红包封面怎么领取
  17. android 2.3.6Gallary源码导入到Eclipse中编译
  18. 2021年计算机类 人工智能 软件SCI一区期刊
  19. 我爬了链家青岛市北3000套二手房得出一个结论
  20. 静态网页爬取-Requests

热门文章

  1. 实现strcmp库函数的功能
  2. linux下source命令使用详解
  3. Excel中vlookup函数的使用方法
  4. 为什么都说猫有九条命呢
  5. ubuntu 安装 TensorFlow、opencv3 的 tips
  6. Python-内建函数
  7. 02-HTTP的请求方法以及响应状态码
  8. Python学习札记(二十八) 模块1
  9. 【client】与【offset】
  10. 将hadoop源代码导入eclipse