dxbbiterator.java

来自「用Java写的面相对象的数据库管理系统」· Java 代码 · 共 117 行

JAVA
117
字号
// You can redistribute this software and/or modify it under the terms of// the Ozone Library License version 1 published by ozone-db.org.//// The original code and portions created by SMB are// Copyright (C) 1997-2000 by SMB GmbH. All rights reserved.//// $Id: DxBBIterator.java,v 1.5 2000/10/28 16:55:14 daniela Exp $package org.ozoneDB.DxLib;/** *  *  * @author <a href="http://www.softwarebuero.de/">SMB</a> * @version $Revision: 1.5 $Date: 2000/10/28 16:55:14 $ */public final class DxBBIterator extends DxAbstractIterator {        final static long serialVersionUID = 1L;        DxBBTree bbtree;    DxBBnode node;            /**     */    public DxBBIterator( DxTreeCollection _coll ) {        bbtree = _coll.internalTree();        reset();    }            /**     */    public Object object() {        return node != null ? node.data : null;    }             /**     */    public Object key() {        return node != null ? node.key : null;    }             /**     */    public Object next() {        Object obj = object();        if (atFirstObject) {            atFirstObject = false;        } else {            if (obj != null && !objectRemoved) {                if (node.re != null) {                    node = leftMost( node.re );                } else {                    node = firstRightParent( node );                }                 obj = object();            }             objectRemoved = false;        }         return obj;    }             /**     */    public void reset() {        node = leftMost( bbtree.root() );        atFirstObject = true;        objectRemoved = false;    }             /**     */    public Object removeObject() {        Object obj = object();        if (obj != null && !objectRemoved) {            DxBBnode delNode = node;            if (node.re != null) {                node = leftMost( node.re );            } else {                node = firstRightParent( node );            }             bbtree.removeForKey( delNode.key );            objectRemoved = true;        }         return obj;    }             /**     */    private DxBBnode leftMost( DxBBnode node ) {        if (node != null && node.li != null) {            return leftMost( node.li );        }         return node;    }             /**     */    private DxBBnode firstRightParent( DxBBnode node ) {        if (node == bbtree.quietRoot) {            return null;        }         if (node.isRight) {            return firstRightParent( node.pa );        }         return node.pa;    } }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?