我尝试根据用户和位置之间的距离对我的arrayList进行排序。为此,我创建了以下两种方法:
private void getDistanceBetweenUserAndMarket(ArrayList<SellerObject> seller) {
for (int i = 0; i<seller.size(); i++) {
SellerObject se = seller.get(i);
Location storeLoc = new Location("");
storeLoc.setLatitude(Double.parseDouble(se.getLat()));
storeLoc.setLongitude(Double.parseDouble(se.getLng()));
if (storeLoc != null && mlastLocation != null) {
Float distanceInMetres = mlastLocation.distanceTo(storeLoc);
Float distanceInKm = distanceInMetres / 1000;
DecimalFormat df = new DecimalFormat("#.##");
se.setDistance(distanceInKm);
seller.set(i, se);
}
}
sortArrayList(seller);
}
private void sortArrayList(ArrayList<SellerObject> seller) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
seller.sort(Comparator.comparing(SellerObject::getDistance));
}
getProducts(seller);
}
重复项是通过最后一种方法创建的。同样奇怪的现象是,有时最高值有时在最高值处,有时最低。我想将最低的价格放在顶部