Как вернуть N последовательных элементов из коллекции?

Мне передана коллекция объектов (в моем случае - некоторый класс Contact), и мне нужно вернуть страницу из этой коллекции. Кажется, что мой код намного длиннее, чем нужно. Не хватает ли мне некоторых библиотек, которые могли бы работать более элегантно, чем повторение каждого элемента по одному, как показано ниже?

protected Collection<Contact> getPageOfContacts(
  Collection<Contact> contacts, int pageIndex, int pageSize) {
  if (pageIndex < 0 || pageSize <= 0
    || pageSize > contacts.size()) {
    return contacts;
  }
  int firstElement = pageIndex * pageSize;
  int lastElement = (pageIndex + 1) * pageSize - 1;
  Collection<Contact> pagedContacts = new ArrayList<Contact>();
  int index = -1;
  for (Contact contact : contacts) {
    index++;
    if (index < firstElement) {
      continue;
    }
    if (index > lastElement) {
      break;
    }
    pagedContacts.add(contact);
  }
  return pagedContacts;
}
7
задан Thomas Jung 2 April 2011 в 08:23
поделиться