作為一名剛上路的超初級程序員,今天終於可以邁開自己的第一步,寫一篇博客。把我自己都感動哭了。
今天看面試題時看到了一個Comparable 的使用,才發現自己好像並沒有使用過這個接口,具體這個接口是怎么用的,我在看了幾篇comparable的博客以后覺得應該把這個東西記錄下來,希望和各位都能夠得到成長。
首先我們舉一個排列int數組的例子,假如一個數組中有這么幾個元素,希望將他進行從小到大排序,不使用冒泡排序等算法,直接使用java中Arrays類的方法進行使用,這個方法就可以直接對數組中的元素進行排序,十分方便。
int[] array = {9,5,7,5,31,7}; Arrays.sort(array); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } 結果:5 5 7 7 9 31
如果說,現在有一個要求,有一個實體類User,User類中有三個屬性,id,name,price
class User{ private int id; private String name; private int price;
需要你按照價格升序進行排序(就如上的int數組排序一樣)。那么我們做這個的時候,還是可以使用sort()方法,不同的是,之前使用的是int類型的數組,這次需要變更成為,User類型的數組按價格進行排序,這時候就需要讓User去實現comparable接口,重寫其中的方法,compareTo方法的返回值只有 -1, 0, 1
class User implements Comparable<User>{ private int id; private String name; private int price; public User(int id, String name, int price) { this.id = id; this.name = name; this.price = price; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", price=" + price + '}'; } @Override public int compareTo(User o) { if(this.price>o.price){ return 1; }else if(this.price<o.price){ return -1; }else { return 0; } } }
最后 new 幾個對象,放入User類型的數組中進行比較,使用sort()進行排序就可以了
User[] users = new User[3]; users[0] = new User(1,"壽司",29); users[1] = new User(2,"蛋撻",21); users[2] = new User(3,"牛排",25); Arrays.sort(users); for (int i = 0; i < users.length; i++) { System.out.println(users[i]); } 結果: User{id=2, name='蛋撻', price=21} User{id=3, name='牛排', price=25} User{id=1, name='壽司', price=29}
1234567.