8 Stimmen

Wie kann man N aufeinanderfolgende Elemente aus einer Sammlung zurückgeben?

Ich bin eine Sammlung von Objekten (einige Kontakt-Klasse in meinem Fall) übergeben und müssen eine Seite aus dieser Sammlung zurückgeben. Mein Code fühlt sich viel länger an, als er sein müsste. Vermisse ich einige Bibliotheken, die durchführen könnte, dass eleganter als Iteration über jedes Element ein zu einer Zeit, wie ich unten tun?

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;
}

0voto

Ravindranath Akila Punkte 1318
Iterables.partition(contacts, pageSize).forEachRemaining(paginatedContacts->{/*Operation here*/});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X