Android-java-如何按对象内的某个值对对象列表进行排序

我试图按对象内的特定值对对象的数组列表进行排序。什么是做这种事情的最佳方法。我应该将Collections.sort()与某种比较器一起使用吗?

我试图用一个变量中包含的浮点值对对象列表进行排序。

编辑:这是我到目前为止:

public class CustomComparator implements Comparator<Marker> {

@Override

public int compare(Mark o1, Mark o2) {

return o1.getDistance().compareTo(o2.getDistance());

}

}

错误状态:无法在原始类型double上调用compareTo(double)。

是因为比较器不能返回某种类型以外的任何东西吗?

回答:

如果你要查找默认排序,则应使用Comparable而不是Comparator。

看到这里,这可能会有帮助- 类何时应该是Comparable和/或Comparator

尝试这个

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class TestSort {

public static void main(String args[]){

ToSort toSort1 = new ToSort(new Float(3), "3");

ToSort toSort2 = new ToSort(new Float(6), "6");

ToSort toSort3 = new ToSort(new Float(9), "9");

ToSort toSort4 = new ToSort(new Float(1), "1");

ToSort toSort5 = new ToSort(new Float(5), "5");

ToSort toSort6 = new ToSort(new Float(0), "0");

ToSort toSort7 = new ToSort(new Float(3), "3");

ToSort toSort8 = new ToSort(new Float(-3), "-3");

List<ToSort> sortList = new ArrayList<ToSort>();

sortList.add(toSort1);

sortList.add(toSort2);

sortList.add(toSort3);

sortList.add(toSort4);

sortList.add(toSort5);

sortList.add(toSort6);

sortList.add(toSort7);

sortList.add(toSort8);

Collections.sort(sortList);

for(ToSort toSort : sortList){

System.out.println(toSort.toString());

}

}

}

public class ToSort implements Comparable<ToSort> {

private Float val;

private String id;

public ToSort(Float val, String id){

this.val = val;

this.id = id;

}

@Override

public int compareTo(ToSort f) {

if (val.floatValue() > f.val.floatValue()) {

return 1;

}

else if (val.floatValue() < f.val.floatValue()) {

return -1;

}

else {

return 0;

}

}

@Override

public String toString(){

return this.id;

}

}

以上是 Android-java-如何按对象内的某个值对对象列表进行排序 的全部内容, 来源链接: utcz.com/qa/406873.html

回到顶部