嗨,我是新來的Java我有一個ArrayList的[object1, object2...]
如何通過比較元素的屬性來排序ArrayList?
和每個對象都有一個getNumber()
方法,它返回一個整型數字
我如何可以通過比較getNumber的返回值排序的ArrayList()方法?
嗨,我是新來的Java我有一個ArrayList的[object1, object2...]
如何通過比較元素的屬性來排序ArrayList?
和每個對象都有一個getNumber()
方法,它返回一個整型數字
我如何可以通過比較getNumber的返回值排序的ArrayList()方法?
創建Comparator:
// Here T is your class name
public class Test implements Comparator<T> {
@Override
public int compare(T o1, T o2) {
return (o1.getNumber() - o2.getNumber());
}
}
並將其傳遞給Collections.sort:
Collections.sort(yourList, new Test());
使用比較或實現您的ArrayList比較的對象
http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator
上面的鏈接應該有你需要的一切。
您應該使用Comparator和Collections.sort() 確保您存儲在ArrayList中的對象的equals()和hashCode()方法被正確覆蓋並遵守hashCode合約。
您可以看看this article瞭解更多詳情。
使用'Collections#sort'時,不需要'equals'和'hashCode'。 –
來自Comparable的javadoc: 強烈建議(儘管不要求)自然排序與equals相一致。這是因爲排序集合(和排序映射)沒有顯式比較器時,它們與自然排序與equals不一致的元素(或鍵)一起使用時表現得「奇怪」。特別是,這樣的有序集合(或有序映射)違反了集合(或映射)的一般契約,它是用等價方法定義的。 – clement
爲什麼我downvoted這個問題:http://meta.stackexchange.com/a/149138/133242 –
使用['Collections#sort(List,Comparator)'](http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort%28java.util.List,%20java。 util.Comparator%29) –
和['Comparable'](http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)或['Compara tor'](http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html)。 –