java迭代器模式作业二:设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用手对数据进行分页处理。
时间: 2023-12-03 19:43:46 浏览: 31
首先,我们需要定义一个迭代器接口,该迭代器接口包含 hasNext() 和 next() 方法:
```java
public interface Iterator<T> {
boolean hasNext();
T next();
}
```
接下来,我们定义一个逐页迭代器接口,该迭代器接口扩展了迭代器接口,并添加了一个 getPageSize() 方法和一个 setPageNumber() 方法:
```java
public interface PagingIterator<T> extends Iterator<T> {
int getPageSize();
void setPageNumber(int pageNumber);
}
```
现在,我们可以实现逐页迭代器接口。假设我们有一个 List 类型的数据源:
```java
public class ListPagingIterator<T> implements PagingIterator<T> {
private List<T> list;
private int pageSize;
private int pageNumber;
public ListPagingIterator(List<T> list, int pageSize) {
this.list = list;
this.pageSize = pageSize;
this.pageNumber = 0;
}
public int getPageSize() {
return pageSize;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public boolean hasNext() {
return (pageNumber + 1) * pageSize < list.size();
}
public T next() {
int startIndex = pageNumber * pageSize;
int endIndex = Math.min(startIndex + pageSize, list.size());
List<T> page = list.subList(startIndex, endIndex);
pageNumber++;
return (T) page;
}
}
```
在上面的实现中,我们将数据源分成一个一个的页,每个页包含指定个数的元素。我们可以通过 setPageNumber() 方法来设置当前页数,然后通过 hasNext() 方法来判断是否还有下一页,最后通过 next() 方法来获取下一页的元素。