第一次写东西。
list<object> 排序 传送门
http://blog.youkuaiyun.com/bobo14164/article/details/8054708
http://blog.youkuaiyun.com/benbenkui/article/details/6802529
http://phl.iteye.com/blog/696700(推荐)
写这个是因为刚开始在做list排序的时候,看了别人写的一篇文章,说 Collections.sort是升序排列 Collections.reverse是降序排列,然而我自己使用的生活,升序很好实现,然而降序一直不能正常显示,后来百度到一篇文章,说他也是做升序和降序,也是用这两个方法排序,如果先执行reverse后执行sort的话,降序排列出问题,反之则正常,之后我查了相关资料,才发现Collections.reverse并不是什么降序排列,而是反转list中元素的顺序,坑。
之前代码:java bean
public class NearByBean implements Comparable<NearByBean> {
public String id;
public String sid;
public String title;
public String pic;
public String address;
public String distance;
public String shop_mobile;
public String is_mall;
public String getDistance() {
return distance;
}
public void setDistance(String distance) {
this.distance = distance;
}
@Override
public int compareTo(NearByBean another) {
// TODO Auto-generated method stub
// compare(Object 对象1,Object 对象2)重写时
// 1) 若返回负数,则表示 对象1<对象2
// 2) 若返回0,则表示 对象1=对象2
// 3) 若返回正数,则表示 对象1>对象2
// 反过来,在String类中,他有个CompareTo()方法,他的比较结果也是如此
// 字符串1.CompareTo(字符串2)比较结果
// 1) 若字符串1<字符串2,则返回负数
// 2) 若字符串1=字符串2,则返回0
// 3) 若字符串1>字符串2,则返回正数
int a = Integer.valueOf(another.getDistance());
int b = Integer.valueOf(this.distance);
return b - a;
// return this.distance.compareTo(another.getDistance());
}
调用排序
/**
* 排序list,按商家距离排序
* @param mShopList
* Collections.sort(mShopList); 升序排列
* Collections.reverse(mShopList); 反转排列顺序,并不是倒叙
*/
@SuppressWarnings("unchecked")
private void getPxList(List<NearByBean> mShopList) {
// TODO Auto-generated method stub
Collections.sort(mShopList);
for(int i=0;i<mShopList.size();i++){
System.out.println("升序 "+i+"---"+mShopList.get(i).title+"------->"+mShopList.get(i).distance);
}
Collections.reverse(mShopList);
for(int i=0;i<mShopList.size();i++){
System.out.println("降序 "+i+"----"+mShopList.get(i).title+"----->"+mShopList.get(i).distance);
}
}
修改后代码:
bean:
public class NearByBean {
public String id;
public String sid;
public String title;
public String pic;
public String address;
public String distance;
public String shop_mobile;
public String is_mall;
}
调用:
/**
* list按字段值排序,distance距离
*
* @param mShopList
* 集合
* @param sort
* 排序-->正序 倒序
* @return
*/
public static List<NearByBean> getPxList(List<NearByBean> mShopList, final String sort) {
// TODO Auto-generated method stub
Collections.sort(mShopList, new Comparator<NearByBean>() {
@Override
public int compare(NearByBean lhs, NearByBean rhs) {
// TODO Auto-generated method stub
int a = Integer.valueOf(lhs.distance);
int b = Integer.valueOf(rhs.distance);
int result = 0;
if (sort.equals("asc")) {
result = a - b;// 升序
} else if (sort.equals("desc")) {
result = b - a;// 降序
}
return result;
}
});
return mShopList;
}
}