Java вложенные циклы foreach - PullRequest
       7

Java вложенные циклы foreach

0 голосов
/ 26 апреля 2018

Как я могу переписать эти циклы, используя foreach?

for( int i = 0; i < bList.size(); i++ )
{
    for( int j = i + 1; j < bList.size(); j++ )
    {
        System.out.println(bList.get(i));
        System.out.println(bList.get(j));
    }
}

P.S. public CopyOnWriteArrayList<Ball> bList = new CopyOnWriteArrayList<Ball>();

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать синтаксис с метками и счетчиками int.

Мой пример с классом String вместо Ball:

CopyOnWriteArrayList<String> bList = new CopyOnWriteArrayList<String>();
    bList.add("1");
    bList.add("2");
    bList.add("3");
    bList.add("4");
    bList.add("5");

int i = 0;
    for (String s : bList) {
        System.out.println("outer: " + s);
        int j = 0;
        l: for (String s2 : bList) {
            while(j < i) {
                j++;
                continue l;
            }
            System.out.println("inner: " + s2);
        }
        i++;
    }

Вывод будет:

outer: 1
inner: 1
inner: 2
inner: 3
inner: 4
inner: 5
outer: 2
inner: 2
inner: 3
inner: 4
inner: 5
outer: 3
inner: 3
inner: 4
inner: 5
outer: 4
inner: 4
inner: 5
outer: 5
inner: 5

Вы не можете изменять коллекцию в таких условиях. Я имею в виду, что вы не можете удалить какой-либо элемент из коллекции, просматривая его.

Я хотел бы предложить вам поместить все коллизии в некоторую структуру данных, например ArrayList, и удалять элементы ПОСЛЕ итерации (циклы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...