简体   繁体   中英

Checking if ArrayList element exists or not

I'll try to explain this as best I can. I have an ArrayList of String's. I am trying to implement server-side paging for a webapp. I am restricted to the number of items per page (6 in this case) which are read from this ArrayList. The ArrayList is, lets say, the entire catalog, and each page will take a section of it to populate the page. I can get this working just fine when there are enough elements to fill the particular page, its when we hit the end of the ArrayList where there will be less than 6 items remaining for that pages segment. How can I check if the ArrayList is on its last element, or if the next one doesn't exist? I have the following code (in pseudo-ish code):

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

The if in the code is the problem. Any suggestions will be greatly appreciated.

Thanks.

It sounds like you want:

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

That will stop you from trying to fetch values beyond the end of the list.

If that's the case, you may want to change the bounds of the for loop to something like:

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

(You may find this somewhat easier to format if you use shorter names, eg firstIndex instead of enterArrayListAtElement and pageSize instead of numberOfItemsPerPage .)

Can't you just get

completeCatalog.size()

and compare it to i? ie to answer the question "is there an ith element" you say

 if (i<completeCatalog.size())

You just need to add a second expression to look whether the end of the list was reached already:

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

An ArrayList has the method of size(), which returns the number of elements within the List.

Therefore, you can use this within the if statement to check you've not went too far.
For example,

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM