下面這個方法是用來比較的,相同的對象就放到同一個集合中,不相同的就新建一個。現在下面我寫的判斷那裡每次比較都只能跟上一個進行比較,並不是和全部進行比較。所以想請教一下前輩們還有什麼更好的辦法嗎?排序嗎?怎麼寫?
/**
* 按照地點進行分組
* @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轉換成你需要的數據結構