Java(android)安卓中的list对象排序
2013-05-21 15:44
555 查看
由于开发百度地图获取到的POI信息需要进行由进到远的排序。所以需要些排序算法。
之前是采用冒泡排序算法
算法如下:(摘自网络)
进过搜索发现,原来JAVA工具类已经有排序算法了,遂用之。
Collections类下的sort方法
两种方法都能实现排序。
好了,下面是我们需要排序的对象。
一个用于存放通过百度POI搜索得到的结果的对象
这里使用方法:
我们就需要调用方法:
----------------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------------------
以下是另一种方法
这种方法需要对象本身实现Comparable<T>接口。
所以PoiInfo类改为:
实现了compareTo方法,以上是升序排序,如果需要降序排序,将return getDistance() - another.getDistance();改为return another.getDistance() - getDistance();即可。
OK ,那么我们就需要调用代码:
OK 上两张对比图
未整理之前:
整理之后的距离:
之前是采用冒泡排序算法
算法如下:(摘自网络)
public class MaoPaoSort { public static void main(String[] args) { try { int mp[] = new int[args.length]; for (int i = 0; i < args.length; i++) { mp[i] = Integer.parseInt(args[i]); } for (int i = 0; i < mp.length; i++) { for (int j = 0; j < mp.length; j++) { int temp; if (mp[i] < mp[j]) { temp = mp[j]; mp[j] = mp[i]; mp[i] = temp; } } } for (int i = 0; i < mp.length; i++) { System.out.print(mp[i] + " "); }
进过搜索发现,原来JAVA工具类已经有排序算法了,遂用之。
Collections类下的sort方法
static <T> void | sort(List<T> list, Comparator<? super T> comparator) Sorts the specified list using the specified comparator. |
static <T extends Comparable<? super T>> void | sort(List<T> list) Sorts the specified list in ascending natural order. |
好了,下面是我们需要排序的对象。
一个用于存放通过百度POI搜索得到的结果的对象
package com.android.so.model; import com.baidu.platform.comapi.basestruct.GeoPoint; public class PoiInfo { private String name; private String address; private boolean detail; private String uid; private String telephone; private GeoPoint pt; private int distance; private int ePoiType; public String getName() { return name; } public String getAddress() { return address; } public String getUid() { return uid; } public String getTelephone() { return telephone; } public GeoPoint getPt() { return pt; } public void setName(String name) { this.name = name; } public void setAddress(String address) { this.address = address; } public void setUid(String uid) { this.uid = uid; } public void setTelephone(String telephone) { this.telephone = telephone; } public void setPt(GeoPoint pt) { this.pt = pt; } public int getePoiType() { return ePoiType; } public void setePoiType(int ePoiType) { this.ePoiType = ePoiType; } public boolean isDetail() { return detail; } public void setDetail(boolean detail) { this.detail = detail; } public int getDistance() { return distance; } public void setDistance(int distance) { this.distance = distance; } }现在我们需要他按照Distance(距离)来进行升序排序。
这里使用方法:
static <T> void | sort(List<T> list, Comparator<? super T> comparator) Sorts the specified list using the specified comparator. |
Collections.sort(poiArrayList, new Comparator<PoiInfo>() { @Override public int compare(PoiInfo lhs, PoiInfo rhs) { return lhs.getDistance() - rhs.getDistance(); } });同理如果需要进行降序排序,只需要更改return的结果,如下:
Collections.sort(poiArrayList, new Comparator<PoiInfo>() { @Override public int compare(PoiInfo lhs, PoiInfo rhs) { return rhs.getDistance() - lhs.getDistance(); } });
----------------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------------------
以下是另一种方法
static <T extends Comparable<? super T>> void | sort(List<T> list) Sorts the specified list in ascending natural order. |
所以PoiInfo类改为:
package com.android.so.model; import com.baidu.platform.comapi.basestruct.GeoPoint; public class PoiInfo implements Comparable<PoiInfo> { private String name; private String address; private boolean detail; private String uid; private String telephone; private GeoPoint pt; private int distance; private int ePoiType; public String getName() { return name; } public String getAddress() { return address; } public String getUid() { return uid; } public String getTelephone() { return telephone; } public GeoPoint getPt() { return pt; } public void setName(String name) { this.name = name; } public void setAddress(String address) { this.address = address; } public void setUid(String uid) { this.uid = uid; } public void setTelephone(String telephone) { this.telephone = telephone; } public void setPt(GeoPoint pt) { this.pt = pt; } public int getePoiType() { return ePoiType; } public void setePoiType(int ePoiType) { this.ePoiType = ePoiType; } public boolean isDetail() { return detail; } public void setDetail(boolean detail) { this.detail = detail; } public int getDistance() { return distance; } public void setDistance(int distance) { this.distance = distance; } @Override public int compareTo(PoiInfo another) { return getDistance() - another.getDistance(); } }
实现了compareTo方法,以上是升序排序,如果需要降序排序,将return getDistance() - another.getDistance();改为return another.getDistance() - getDistance();即可。
OK ,那么我们就需要调用代码:
Collections.sort(poiArrayList);
来对list进行排序
OK 上两张对比图
未整理之前:
整理之后的距离:
相关文章推荐
- 排序算法Java(android)安卓中的list对象排序
- Android Java List 排序
- java根据List内对象的属性排序方法
- 安卓 对实体list数组对象按照时间排序、
- Java比较器给List中的对象排序
- Java_List对象排序通用方法
- Java根据容器(List,ArrayList)内对象的字段排序
- java中List对象排序的通用方法
- 【java】之对List中每个对象元素按时间顺序排序
- Android List(集合)中的对象以某一个字段排序
- java根据List内对象的属性排序
- java 实现List对象中按某种方式进行排序
- Java依照List内存储的对象的某个字段进行排序
- java中对List中对象排序实现
- 【原创】Java 对 List 内对象根据对象属性进行排序
- Java中对List中的存储对象根据属性进行排序的办法
- JAVA 对List 中的对象排序
- JAVA中对List中的对象排序
- Java对List中的对象进行排序
- java List 对象排序