1

我想对包含以下字段的对象的向量进行排序

public class CategoryListing   {

     String company_id;
     String company_name;
     double distance;

     //setters and getters here 
}

我从 webservice 填充了向量,现在我想按距离对该向量进行排序,这意味着我想显示最近的向量。如何对包含对象的向量进行排序?

4

2 回答 2

4

其他答案都不适用于黑莓,因为它不支持泛型。黑莓使用旧版本的 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());
于 2012-10-11T07:50:36.230 回答
2

您可以使用比较器。

定义一个比较器,它将按距离排序,如下所示

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);
    }
}
于 2012-10-11T07:12:04.493 回答