java compareTo() 用法注意點
阿新 • • 發佈:2018-12-09
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