1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class URLPaginator {
  4. private final List<String> urls;
  5. private final int pageSize;
  6. private int currentPage;
  7. public URLPaginator(List<String> urls, int pageSize) {
  8. this.urls = urls;
  9. this.pageSize = pageSize;
  10. this.currentPage = 1;
  11. }
  12. public List<String> getPage() {
  13. if (urls == null || urls.isEmpty()) {
  14. return new ArrayList<>(); // Return empty list if no URLs
  15. }
  16. int startIndex = (currentPage - 1) * pageSize;
  17. int endIndex = Math.min(startIndex + pageSize, urls.size()); //Prevent index out of bounds
  18. List<String> page = new ArrayList<>();
  19. for (int i = startIndex; i < endIndex; i++) {
  20. page.add(urls.get(i));
  21. }
  22. return page;
  23. }
  24. public int getCurrentPage() {
  25. return currentPage;
  26. }
  27. public int getPageSize() {
  28. return pageSize;
  29. }
  30. public int getTotalPages() {
  31. return (int) Math.ceil((double) urls.size() / pageSize);
  32. }
  33. public void nextPage() {
  34. currentPage++;
  35. }
  36. public void previousPage() {
  37. currentPage--;
  38. if (currentPage < 1) {
  39. currentPage = 1;
  40. }
  41. }
  42. public static void main(String[] args) {
  43. // Example Usage
  44. List<String> urls = new ArrayList<>();
  45. for (int i = 1; i <= 25; i++) {
  46. urls.add("http://example.com/page" + i);
  47. }
  48. URLPaginator paginator = new URLPaginator(urls, 5);
  49. //Dry-run mode - just print pages, don't modify state
  50. for (int i = 1; i <= 3; i++) {
  51. List<String> page = paginator.getPage();
  52. System.out.println("Page " + i + ": " + page);
  53. }
  54. }
  55. }

Add your comment