Как мне получить доступ к элементу в Arraylist внутри другого Arraylist? - PullRequest
0 голосов
/ 08 апреля 2020

Итак, я работаю над объектно-ориентированным проектом java, который занимается управлением нагрузками в транспортной компании. Путешествие имеет происхождение, местоположение, содержание и пункт назначения. Путешествие имеет один или несколько контейнеров, в которых можно отслеживать температуру, влажность и давление в контейнере. Итак, я хочу получить все данные о путешествии, в котором находился данный контейнер (история контейнера). Все контейнеры, используемые для любой данной поездки, хранятся в " containerList " (arraylist) этой поездки.

Таким образом, идея заключается в том, что метод " containerHistory " должен смотреть через arraylist " history " (который содержит завершенные поездки) и для каждого путешествия в массиве " history ", следует просмотреть список массивов " containerList " для каждого данного путешествия и для каждого контейнера в списке массивов " containerList " сравните идентификатор данного контейнера с тем, который мы ищем (который в приведенном ниже коде будет представлен строкой " search * 1016" * "

    public ArrayList<Journey> containerHistory(String search, ArrayList<Journey> history){
        ArrayList<Journey> containerhistorylist = new ArrayList<Journey>();
        for(Journey j : history) {
            for(Container c : j.getContainerList()) {
                if (c.getContainerId().contentEquals(search)) {
                    containerhistorylist.add(j);
                }
            }
        }
        return containerhistorylist;        
    }

Любая идея о том, как улучшить этот код или альтернативный способ решения этой проблемы, будет принята с благодарностью.

1 Ответ

1 голос
/ 08 апреля 2020

Если вам удобно использовать Java 8 потоков, тогда возможен следующий код:

List<Journey> containerhistorylist = history
    .stream()
    .filter(j -> j.getContainerList()
        .stream()
        .anyMatch(c -> c.getContainerId().contentEquals(search)))
    .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...