1. 程式人生 > >java compareTo() 用法注意點

java compareTo() 用法注意點

   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);
//自動呼叫compareTo System.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