java compareTo() 用法注意点

时间:2022-06-05 22:34:43

转自:http://www.2cto.com/kf/201305/210466.html

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>接口

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;

 }

}

效果如下:

java compareTo() 用法注意点

java compareTo() 用法注意点的更多相关文章

  1. Java 习惯用法总结

    转自:http://www.importnew.com/15605.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » Java 习惯用法总结 2015/04/ ...

  2. 【转】java list用法示例详解

    转自:http://www.jb51.net/article/45660.htm java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对java list用法做了详解. Lis ...

  3. Java List 用法代码分析 非常详细

    Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3 ...

  4. Java split用法

    Java split用法 java.lang.string.split split 方法  将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separat ...

  5. Java Enum用法详解

    Java Enum用法详解 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举 ...

  6. 你真的了解java的lambda吗?- java lambda用法与源码分析

    你真的了解java的lambda吗?- java lambda用法与源码分析 转载请注明来源:cmlanche.com 用法 示例:最普遍的一个例子,执行一个线程 new Thread(() -&gt ...

  7. Java compareTo&lpar;&rpar; 方法(转载)

    Java compareTo() 方法 compareTo() 方法用于两种方式的比较: 字符串与对象进行比较. 按字典顺序比较两个字符串. 语法: int compareTo(Object o)// ...

  8. Java compareTo的用法

    compareTo() 方法用于将 Number 对象与方法的参数进行比较.可用于比较 Byte, Long, Integer等. 该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比 ...

  9. java TreeMap用法

    转自:http://huchenqiang90.blog.163.com/blog/static/11250080020101025956498/ 最近工作遇到需要按一个model中不同的列进行排序的 ...

随机推荐

  1. UFLDL 教程三总结与答案

    主成分分析(PCA)是一种能够极大提升无监督特征学习速度的数据降维算法.更重要的是,理解PCA算法,对实现白化算法有很大的帮助,很多算法都先用白化算法作预处理步骤.这里以处理自然图像为例作解释. 1. ...

  2. 浅谈C&plus;&plus;多态性

    本文转载至http://blog.csdn.net/hackbuteer1/article/details/7475622 总结: (1)区分概念:    重载----同一个类中,相同的函数名字,不同 ...

  3. Python的列表排序

    Python的列表排序 本文为转载,源地址为:http://blog.csdn.net/horin153/article/details/7076321 在 Python 中, 当需要对一个 list ...

  4. Linux内核ROP学习

    0x00 前言 1.SMEP(Supervisor Mode Execution Protection):一种减缓内核利用的cpu策略,禁止内核态到用户态内存页的代码执行(32位的addresses ...

  5. 《Hadoop》对于高级编程Hadoop实现构建企业级安全解决方案

    本章小结 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方式的方法 第10章讨论了Hadoop安全性以及Hadoop ...

  6. ucos任务控制块详解

    Ucos实现多任务的基础包括几个方面:任务控制块,任务堆栈,中断,任务优先级,一一说起 首先,任务控制块的结构如下 //系统在运行一个任务的时候,按照任务的优先级获取任务控制块,再在任务堆栈中获得任务 ...

  7. 【JDK1&period;8】JDK1&period;8集合源码阅读——LinkedList

    一.前言 这次我们来看一下常见的List中的第二个--LinkedList,在前面分析ArrayList的时候,我们提到,LinkedList是链表的结构,其实它跟我们在分析map的时候讲到的Link ...

  8. FFMPEG结构体分析:AVCodec

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...

  9. Java中map集合系列原理剖析

    看了下JAVA里面有HashMap.Hashtable.HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正 HashMap和Hashtable的区别 HashSet和Hash ...

  10. Qt ------ QString 操作

    QStringList QString::arg     ------- 字符串的格式化处理,类始于sprintf 比如:QString("%1").arg(10,2,16,QLa ...