Проверка, существует ли элемент ArrayList или нет - PullRequest
0 голосов
/ 02 марта 2011

Я постараюсь объяснить это как можно лучше. У меня есть ArrayList из String. Я пытаюсь реализовать пейджинг на стороне сервера для веб-приложения. Я ограничен количеством элементов на странице (в данном случае 6), которые читаются из этого ArrayList. ArrayList - это, скажем, весь каталог, и каждая страница займет его раздел для заполнения страницы. Я могу заставить это работать нормально, когда достаточно элементов для заполнения конкретной страницы, когда мы достигаем конца ArrayList, где для этого сегмента страниц остается менее 6 элементов. Как я могу проверить, находится ли ArrayList на своем последнем элементе, или нет следующего? У меня есть следующий код (в псевдо-коде):

int enterArrayListAtElement = (numberOfItemsPerPage * (requestedPageNumber - 1));
for (int i = 0; i < numberOfItemsPerPage; i++) {
    if (!completeCatalog.get(enterArrayListAtElement + i).isEmpty() {
        completeCatalog.get(enterArrayListAtElement + i);
    }
}

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

Спасибо.

Ответы [ 4 ]

4 голосов
/ 02 марта 2011

Звучит так, как вы хотите:

if (enterArrayListAtElement + i < completeCatalog.size())

Это остановит вас от попыток получить значения за пределами списка.

Если это так, вы можете изменитьграницы цикла for выглядят примерно так:

int actualCount = Math.min(numberOfItemsPerPage,
                           completeCatalog.size() - enterArrayListAtElement);
for (int i = 0; i < actualCount; i++) {
    // Stuff
}

(форматирование может оказаться более простым, если вы используете более короткие имена, например firstIndex вместо enterArrayListAtElement и pageSize вместо numberOfItemsPerPage.)

0 голосов
/ 02 марта 2011

ArrayList имеет метод size (), который возвращает количество элементов в списке.

Следовательно, вы можете использовать это в операторе if, чтобы проверить, что вы не зашли слишком далеко.
Например,

if(enterArrayListAtElement + i < completeCatalog.size()) {
   ...
}
0 голосов
/ 02 марта 2011

Вам просто нужно добавить второе выражение, чтобы посмотреть, достигнут ли конец списка:

int enterArrayListAtElement = (numberOfItemsPerPage * (requestedPageNumber - 1));
for (int i = 0; i < numberOfItemsPerPage; i++) {
    if (enterArrayListAtElement + i < completeCatalog.size() && !completeCatalog.get(enterArrayListAtElement + i).isEmpty() {
        completeCatalog.get(enterArrayListAtElement + i);
    }
}
0 голосов
/ 02 марта 2011

Разве вы не можете просто получить

completeCatalog.size()

и сравнить это со мной? то есть, чтобы ответить на вопрос «есть ли i-й элемент», вы говорите

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