@AlexAlex000

Как сравнить данные объектов в двух ArrayList?

Пишу небольшую игрушку под андройд.
Был у меня такой вот код, который проверял столкновение двух объектов(взятый с одной из статей хабра). Астероиды(asteroid), которые хранятся в Arraylist(Asteroids) и космический корабль(ship).
for (Asteroid asteroid : asteroids)
            if (asteroid.isCollision(ship.x, ship.y, ship.size)) {
            }

позже мне захотелось добавить сбор монеток(сoin) а значит надо было удалять их при столкновении с кораблем. Поэтому я применил Iterator для удаления конкретной столкнувшейся с кораблем монетки. С этим тоже особых проблем не возникло.
for(Iterator<Coin> iterator = coins.iterator(); iterator.hasNext();) {
            Coin coin = iterator.next();
            if (coin.isCollision1(ship.x, ship.y, ship.size)) {
                iterator.remove();
            }
        }


Но теперь я хочу чтобы при столкновении монетки(coin) и астероида(asteroid) оба удалялись. Я так понимаю мне нужно что то вроде такого:
for(Iterator<Coin> iterator = coins.iterator(); iterator.hasNext();) {
int x;
int y;
int size;
if (coin.isCollision1(x, y, size)) {
                iterator.remove();
                        /*а здесь какая то магия вызывающая итератор Asteroids и подставляющая координаты астероидов x,y,size для сравнения в int x, int y, int size. */
        }
}

Но ума не приложу как это сделать. Честно гуглил несколько дней, но не нашел ничего по теме.
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
jamakasi666
@jamakasi666
Просто IT'шник.
В вашем случае все просто, но это не совсем правильно т.к. сложность вырастает в обсчетах.
Нужен просто вложенный цикл.
Цикл астероид_итератор астероиды{
цикл монета_итератор монеты{
если монета_итератор.колизия(астероид_итератор.coords) удалить обоих
}
}

Но опять же это не совсем правильно и если объектов много то вообще неприменимо так вот в лоб.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
BostonGene Москва
от 100 000 до 200 000 руб.
Digital Horizon Москва
от 150 000 руб.
8BIT GROUP Москва
от 180 000 до 280 000 руб.
23 янв. 2019, в 09:57
500 руб./в час
23 янв. 2019, в 09:01
2500 руб./за проект
23 янв. 2019, в 08:56
1500 руб./в час