我想对包含以下字段的对象的向量进行排序
public class CategoryListing {
String company_id;
String company_name;
double distance;
//setters and getters here
}
我从 webservice 填充了向量,现在我想按距离对该向量进行排序,这意味着我想显示最近的向量。如何对包含对象的向量进行排序?
我想对包含以下字段的对象的向量进行排序
public class CategoryListing {
String company_id;
String company_name;
double distance;
//setters and getters here
}
我从 webservice 填充了向量,现在我想按距离对该向量进行排序,这意味着我想显示最近的向量。如何对包含对象的向量进行排序?
其他答案都不适用于黑莓,因为它不支持泛型。黑莓使用旧版本的 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());
您可以使用比较器。
定义一个比较器,它将按距离排序,如下所示
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
。注意因为数组是从 1.2 开始存在的,它也存在于黑莓中。
公共静态无效排序(向量向量,比较器比较器){
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);
}
}