compareTo方法

转载 2016年08月28日 23:31:19

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

效果如下:

 \

java中compareTo和compare方法之比较

这两个方法经常搞混淆,现对其进行总结以加深记忆。 1.compareTo(Object o)方法是java.lang.Comparable接口中的方法,当需要对某个类的对象进行排序时,该类需要实现C...
  • ghui23
  • ghui23
  • 2016年07月29日 22:02
  • 5371

关于重写equals,hashcode以及compareTo方法

1.Object的equals()方法比较的是地址值 2.String 、Math、还有Integer、Double。。。。等这些封装类重写了Object中的equals()方法, 让它不再比较句...

Java 关于重写compareTo方法

概述"当一个类实现类Comparable接口,此类就可以跟很多泛型算法(generic algorithm) 以及依赖于该接口 的集合实现(Collection implementation)进行协作...

Object 开发中常用的重写方法总结toString,equals,hashCode,compareTo

public String toString() 返回该对象的字符串表示。通常,toString方法会返回一个“以文本方式表示”此对象的字符串。 结果应是一个简明但易于读懂的信息表达式。建议所有子类...

java中compareTo方法详解

int java.lang.String.compareTo(String anotherString) Compares two strings lexicographically. The co...

java中的compareto方法的详细介绍

javacompareTo  java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值,看下面一组代码 String a="a",b="b"; System.out....

编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在

编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在...

String中的compareTo与compareToIgnoreCase()方法解析

这个方法的意思是比较两个字符串,不区分大小写。 我们来看一下这个方法是怎样实现的?public int compareToIgnoreCase(String str) { retur...

equals()、hashCode()和compareTo()方法

1.equals()、hashCode()和compareTo()方法    一般来说,如果你要把一个类的对象放入容器中,那么通常要为其重写equals()方法,让他们比较地址值而不是内容值。特别地...
  • Pythod
  • Pythod
  • 2012年04月24日 15:55
  • 336

关于TreeSet<E>泛型类中的compareTo()方法的调用

关于TreeSet泛型类中的compareTo()方法的调用: compareTo()方法使用二叉排序树的方法进行排序,在调用对象.add()方法时自动进行比较,不用显式调用该方法。比较情况见下面代...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:compareTo方法
举报原因:
原因补充:

(最多只允许输入30个字)