下面这个方法是用来比较的,相同的对象就放到同一个集合中,不相同的就新建一个。现在下面我写的判断那里每次比较都只能跟上一个进行比较,并不是和全部进行比较。所以想请教一下前辈们还有什么更好的办法吗?排序吗?怎么写?
/**
* 按照地点进行分组
* @param list
* @return
*/
public static List<GroupEntity> setAddressOrder(Context context, List<ParentEntity> list) {
if (list == null || list.isEmpty()) {
return null;
}
List<GroupEntity> entlist = new ArrayList<GroupEntity>();
GroupEntity group = null;//用来存储数据
for (int i = 0; i < list.size(); i++) {
ParentEntity entity = list.get(i);
if (group == null
|| (1 < Math.abs(group.latitude - entity.getLatitude()))
&& (1 < Math.abs(group.longitude - entity.getLongitude()))) {
group = new GroupEntity();
group.latitude = entity.getLatitude();
group.longitude = entity.getLongitude();
entlist.add(group);
}
group.list.add(entity);
}
return entlist;
}
你可以先使用Hash>来实现,不过需要重写ParentEntity的hasCode方法(因为你的判断是经纬度的范围)。最后把HashMap转换成你需要的数据结构
你确定你这个代码不会报空指针异常?