У меня проблемы с удалением элементов из массива с помощью итератора.Моя цель - найти точки в пределах определенного радиуса и сгруппировать их в набор групп.Я использую начальные точки в качестве ссылки.В коде есть начальный цикл for, который будет проходить через каждое место, затем для каждого места создается внутренний цикл for, чтобы проверить радиус между опорным местом и остальными местами.Если радиус между эталонным местом и другим местом меньше установленного мной порогового значения, он будет добавлен в массив, сгруппированный с другими подобными точками.Поскольку они добавляются в группы, они будут удалены из исходного массива.
Однако у меня возникают проблемы, такие как либо выполнение внешнего цикла for только один раз, либо получение IllegalStateException
.
* 1005.* Вот код:
HashMap<Place, ArrayList<Place>> sets = new HashMap<Place, ArrayList<Place>>();
private void cluster(ArrayList<Place> places) {
for (Iterator<Place> iterator = places.iterator(); iterator.hasNext();) {
Place pl = iterator.next();
ArrayList<Place> subset = new ArrayList<Place>(); // Group
GeoPoint g = new GeoPoint((int) (pl.getGeometry().getLocation()
.getLat() * 1e6), (int) (pl.getGeometry().getLocation()
.getLng() * 1e6));
Point point = new Point();
mapView.getProjection().toPixels(g, point);
sets.put(pl, subset);
subset.add(pl);
iterator.remove();
for (Iterator<Place> iterator2 = places.iterator(); iterator2
.hasNext();) {
Place pl2 = iterator2.next();
int threshold = 100;
GeoPoint g2 = new GeoPoint((int) (pl2.getGeometry()
.getLocation().getLat() * 1e6), (int) (pl2
.getGeometry().getLocation().getLng() * 1e6));
Point point2 = new Point();
mapView.getProjection().toPixels(g2, point);
int dx = Math.abs(point2.x - point.x);
int dy = Math.abs(point2.y - point.y);
if (dx < threshold && dy < threshold) {
subset.add(pl2);
iterator2.remove();
}
}
}
}
Извините за информационную перегрузку, буду очень признателен за помощь.
Заранее благосклонно выглядывает
Rehan