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
返回值的规范。我认为您对您的实现还可以。是否可以随时对列表进行排序?那么您可能对分类数据集
感兴趣。这样,您就不必在事后手动应用排序。是否可以随时对列表进行排序?那么您可能对分类数据集
感兴趣。这样,您就不必在事后手动应用排序。