Как избежать множественных циклов for при обходе всех вложенных дочерних объектов в Java? - PullRequest
0 голосов
/ 09 апреля 2019

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

У меня есть список предметов. Каждый предмет может иметь несколько мест.

> Item01 -> location01, location02, location03
> Item02 -> Location04, location05
....

Мой код выглядит примерно так

        List<Item> itemList = getItemList();
        RenderItem renderItem = new RenderItem();
        List<RenderItem> renderItemList = new ArrayList<RenderItem>();

        for (Item item: itemList){

            for (ItemLocation itemLocation : item.getLocations() ){

                renderItem = new RenderItem();
                renderItem.setItem(item);
                renderItem.setLocation(itemLocation);
                renderItemList.add(renderItem);

            }
        }

Мне нужно пройти через все местоположение и создать renderItemList.

Как мне избавиться от вложенных циклов? какие стратегии я должен использовать? Пожалуйста посоветуй. [Примечание: я могу использовать только Java 7]

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Увеличивая сложность пространства, вы можете уменьшить сложность времени.Если вы можете поддерживать другой ArrayList просто для сохранения Locations, для этого потребуется больше памяти, но тогда вы можете напрямую циклически перемещаться по Locations ArrayList с помощью одного цикла.

0 голосов
/ 09 апреля 2019

обход объектов во вложенных циклах - плохая практика

Nested Loop - плохая практика ЕСЛИ И ТОЛЬКО ЕСЛИ существует другое оптимальное решение, которое может уменьшитьСложность времени от O(N^2) или O(A*B) до O(N)

НО в вашем случае
Вам нужно коснуться всех Locations во всех Items
Так что никаких проблем

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