Wie benutzt man subList ()
Ich habe eine JSF Seite, die zeigt die Liste der Glassfish log-Dateien. Ich benutze lazy loading " für den Seitenumbruch. Ich halte die Liste der log-Dateien-Namen in Java List
.
private List<directoryListObj> dataList = new ArrayList<>();
dataList = dataList.subList(firstRow, lastRow);
- Und hier liegt das problem. Zum Beispiel habe ich 35 Dateien in das Verzeichnis. Wenn ich dies tun
dataList = dataList.subList(5, 15);
Funktioniert es einwandfrei. Aber wenn ich das mache:
dataList = dataList.subList(30, 38);
Ich erhalten den Fehler " falscher index, weil ich möchte index ausserhalb der Liste. Wie kann ich zum Beispiel return Liste Elemente von 30 bis 35? Ich will, wenn ich will-index von 30 bis 40 aber wenn es nur 35 Indizes, um nur die 5.
Kommentar zu dem Problem
dataList = dataList.Unterliste(30, 38 > dataList.size() ? dataList.size() : 38);
Oder
dataList.Unterliste(30, Math.min(38, dataList.size())
@pb2q sieht aus wie Sie verloren haben die chance für eine Antwort.
Wenn Sie einen Blick auf die apidoc unterbreitet Sie werden feststellen, dass es wirft
IndexOutOfBoundsException - endpoint-index-Wert außerhalb des Bereichs (fromIndex < 0 || toIndex > die Größe)
. So der Blick auf die apidoc unterbreitet für solche Hinweise in Zukunft. InformationsquelleAutor der Frage user1285928 | 2012-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
subList(30, 38);
wird scheitern, weil max index 38 ist nicht verfügbar in der Liste, ist also nicht möglich.Nur so kann vor Fragen, für die Teilliste, die Sie explizit bestimmen, der max-index mit der Liste size () - Methode.
zum Beispiel, überprüfen Sie die Größe, die gibt 35, so rufen Sie
sublist(30, size());
ODER
KOPIERT VON pb2q Kommentar
InformationsquelleAutor der Antwort kosa
Um das Letzte element, verwenden Sie einfach die Größe der Liste als zweiten parameter. So zum Beispiel, wenn Sie 35 Dateien, und Sie möchten, dass die letzten fünf, Sie würde tun:
Einen garantiert sicheren Weg, dies zu tun ist:
InformationsquelleAutor der Antwort Joe K
Habe ich implementiert und getestet; Sie sollten die Grundlagen:
InformationsquelleAutor der Antwort Haroldo_OK