我想对包含以下字段的对象
的矢量进行排序public class CategoryListing {
String company_id;
String company_name;
double distance;
//setters and getters here
}
我填充了webservice中的向量,现在我想按距离对该向量进行排序,这意味着我想显示最近的向量。如何对包含对象的向量进行排序?
答案 0 :(得分:4)
其他任何答案都不适合Blackberry,因为它不支持Generics。 Blackberry使用旧版Java。请尝试以下代码。它使用SimpleSortingVector
SimpleSortingVector sortVector = new SimpleSortingVector();
sortVector.setSortComparator(new Comparator() {
public int compare(Object o1, Object o2) {
CategoryListing o1C = (CategoryListing)o1;
CategoryListing o2C = (CategoryListing)o2;
return Double.toString((o1C.distance)).compareTo(Double.toString(o2C.distance));
}
});
//when you add elements to this vector, it is automatically sorted by distance
sortVector.addElement(new CategoryListing());
答案 1 :(得分:2)
您可以使用Comparator。
定义一个比较器,它将按照下面的距离进行排序
public class DistanceComparator implements Comparator {
public int compare(Object o1, Object o2) {
return Double.valueOf(((CategoryListing) o1).distance)
.compareTo(((CategoryListing) o2).distance);// use getters
}
}
使用below sort method
对矢量进行排序。注意由于Arrays存在于1.2中它也存在于黑莓中。
public static void sort(Vector vector,Comparator comparator){
Object[] array = new Object[vector.size()];
vector.copyInto(array);
Arrays.sort(array,comparator);
int i = 0;
Enumeration enumumeration = vector.elements();
while (enumumeration.hasMoreElements()) {
enumumeration.nextElement();
vector.insertElementAt(array[i++], i);
}
}