qobjectblockiterator.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 172 行
JAVA
172 行
package com.cloudwebsoft.framework.base;import org.apache.log4j.Logger;import java.util.Iterator;public class QObjectBlockIterator implements Iterator { public Logger logger = Logger.getLogger(this.getClass().getName()); QObjectDb qObject; private Object[] infoBlock; private int blockID; private int blockStart; private String query; private int startIndex; private int currentIndex; private int endIndex; private String groupName; private Object previousElement = null; private Object nextElement = null; public QObjectBlockIterator(QObjectDb qObject, Object[] block, String query, String groupName, int startIndex, int endIndex) { this.qObject = qObject; this.infoBlock = block; this.blockID = startIndex / qObject.getTable().getBlockSize(); this.blockStart = blockID * qObject.getTable().getBlockSize(); this.query = query; this.currentIndex = startIndex - 1; this.startIndex = startIndex; this.endIndex = endIndex; this.groupName = groupName; } public void remove() {} public boolean hasNext() { if (currentIndex == endIndex) { return false; } if (nextElement == null) { nextElement = getNextElement(); if (nextElement == null) { return false; } } return true; } public boolean hasPrevious() { if (currentIndex == startIndex) { return false; } if (previousElement == null) { previousElement = getPreviousElement(); if (previousElement == null) { return false; } } return true; } public Object next() throws java.util.NoSuchElementException { Object element = null; if (nextElement != null) { element = nextElement; this.nextElement = null; } else { element = getNextElement(); if (element == null) { throw new java.util.NoSuchElementException(); } } return element; } public Object previous() { Object element = null; if (previousElement != null) { element = previousElement; previousElement = null; } else { element = getPreviousElement(); if (element == null) { throw new java.util.NoSuchElementException(); } } return element; } private Object getNextElement() { previousElement = null; Object element = null; if (endIndex != Integer.MAX_VALUE) { while (currentIndex + 1 < endIndex && element == null) { currentIndex++; element = getElement(currentIndex); } } else { if (currentIndex + 1 < endIndex) { currentIndex++; element = getElement(currentIndex); } } return element; } private Object getPreviousElement() { nextElement = null; Object element = null; while (currentIndex >= startIndex && element == null) { currentIndex--; element = getElement(currentIndex); } return element; } private Object getElement(int index) { if (index < 0) { return null; } if (index < blockStart || index >= blockStart + qObject.getTable().getBlockSize()) { this.infoBlock = qObject.getQObjectBlock(query, groupName, index); this.blockID = index / qObject.getTable().getBlockSize(); this.blockStart = blockID * qObject.getTable().getBlockSize(); } Object element = null; int relativeIndex = index % qObject.getTable().getBlockSize(); if (relativeIndex < infoBlock.length) { element = qObject.getQObjectDb(infoBlock[relativeIndex]); } return element; } public void beforeFirst() { currentIndex = startIndex - 1; previousElement = null; nextElement = null; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?