Java linq等价物,用于获取列表中具有最高值的属性

Java linq等价物,用于获取列表中具有最高值的属性,java,Java,我有一个结果列表,arraylistresult: for(PlacedObject po : result){ float[] results = new float[3]; Location.distanceBetween(lastlocation.getLatitude() ,lastlocation.getLongitude() ,Double.parseDouble(po.lat) ,Double.parseDouble(po.ln

我有一个结果列表,
arraylistresult

for(PlacedObject po : result){

     float[] results = new float[3];

     Location.distanceBetween(lastlocation.getLatitude()
     ,lastlocation.getLongitude()
     ,Double.parseDouble(po.lat)
     ,Double.parseDouble(po.lng) ,
     results);

     po.distance = results[0];
}
设置
po.distance
后,我想按照
distance
属性对列表进行排序。在c#中,我会使用linq,但java中有类似的解决方案吗

谢谢


当前解决方案:

Collections.sort(result, new Comparator<PlacedObject>(){
public int  compare(PlacedObject s1, PlacedObject s2) {
    return (int) (s1.distance - s2.distance);
}
});
Collections.sort(结果,新的比较器(){
公共整数比较(PlacedObject s1、PlacedObject s2){
返回(int)(s1.距离-s2.距离);
}
});

这是通过实现
比较器来实现的
类:

一种比较函数,它对某些对象集合施加总排序。可以将比较器传递给排序方法(如Collections.sort或Arrays.sort),以允许对排序顺序进行精确控制

它可以应用到您的列表中。基本上,您可以实现自己的比较器并将其传递给方法

例如,实现可以使用匿名内部类:

Collections.sort(list, new Comparator<PlacedObject>() {

    @Override
    public int compare(PlacedObject po1, PlacedObject po2) {
        return Double.valueOf(po1.distance).compareTo(po2.distance);
    }
});
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(PlacedObject po1、PlacedObject po2){
返回Double.valueOf(po1.distance).compareTo(po2.distance);
}
});

如果您只对最大值感兴趣,正如您的标题所示,也有以相同方式应用的最大值。

这是通过实现
比较器来实现的
类:

一种比较函数,它对某些对象集合施加总排序。可以将比较器传递给排序方法(如Collections.sort或Arrays.sort),以允许对排序顺序进行精确控制

它可以应用到您的列表中。基本上,您可以实现自己的比较器并将其传递给方法

例如,实现可以使用匿名内部类:

Collections.sort(list, new Comparator<PlacedObject>() {

    @Override
    public int compare(PlacedObject po1, PlacedObject po2) {
        return Double.valueOf(po1.distance).compareTo(po2.distance);
    }
});
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(PlacedObject po1、PlacedObject po2){
返回Double.valueOf(po1.distance).compareTo(po2.distance);
}
});

如果您只对最大值感兴趣,正如您的标题所示,还有以相同方式应用的。

谢谢,请查看我的更新。这就是我想到的。它看起来正常吗?或者我应该改成这个吗?@Johan我看不出有什么区别,它符合
compare
返回值的规范。我认为您对您的实现没有问题。谢谢,请检查我的更新。这就是我想到的。它看起来还可以吗?或者我应该改成这个吗?@Johan我看不出有什么区别,它符合
compare
返回值的规范。我认为您对您的实现还可以。是否可以随时对列表进行排序?那么您可能对
分类数据集
感兴趣。这样,您就不必在事后手动应用排序。是否可以随时对列表进行排序?那么您可能对
分类数据集
感兴趣。这样,您就不必在事后手动应用排序。