⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxdiskhashiterator.java

📁 Java的面向对象数据库系统的源代码
💻 JAVA
字号:
// 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-@year@ by SMB GmbH. All rights reserved.//// $Id: DxDiskHashIterator.java,v 1.2 2002/06/08 00:49:38 mediumnet Exp $package org.ozoneDB.DxLib;/** *  *  * @author <a href="http://www.softwarebuero.de/">SMB</a> * @version $Revision: 1.2 $Date: 2002/06/08 00:49:38 $ */public final class DxDiskHashIterator extends DxAbstractIterator {        final static long serialVersionUID = 1L;        DxKeyData		current;        DxDeque		stack;        DxDiskHashMap	hm;            public DxDiskHashIterator( DxDiskHashMap _hm ) {        hm = _hm;        reset();    }            public void reset() {        current = new DxKeyData( null, null );                stack = new DxArrayDeque();        DxDiskSubTable rootTable = hm.rootTable();        DxDiskHashNode[] rootTableTables = rootTable.table();        for (int i = 0; i < rootTableTables.length; i++) {            if (rootTableTables[i] != null) {                stack.push( rootTableTables[i] );            }        }//        DxDiskHashNodeBranch nodeBranch = hm.newNodeBranch();//        nodeBranch.subTable = hm.rootTable();//        stack.push( nodeBranch );        nextEntry();                atFirstObject = true;        objectRemoved = false;    }             public Object object() {        return current.data;    }             public Object key() {        return current.key;    }             public Object next() {        Object obj = object();        if (atFirstObject) {            atFirstObject = false;        } else {            if (obj != null && !objectRemoved) {                nextEntry();                obj = object();            }             objectRemoved = false;        }         return obj;    }            public Object removeObject() {        throw new UnsupportedOperationException( "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;    }     /**     * Depth first serach via the stack.     */    private void nextEntry() {        try {            DxDiskHashNode node = (DxDiskHashNode)stack.pop();                        if (node == null) {                current.set( null, null );            }            else  if (node instanceof DxDiskHashNodeLeaf) {                DxDiskHashNodeLeaf nodeLeaf = (DxDiskHashNodeLeaf)node;                current.set( nodeLeaf.element().key, nodeLeaf.element().data );            }            else  if (node instanceof DxDiskHashNodeBranch) {                DxDiskHashNodeBranch nodeBranch = (DxDiskHashNodeBranch)node;                DxDiskHashNode[] table = nodeBranch.subTable.fetchedTable();                                for (int i=0; i<table.length; i++) {                    if (table[i] != null) {                        stack.push( table[i] );                    }                }                nextEntry();            }            else {                throw new RuntimeException( "Unknown node type: " + node );            }        }        catch (Exception e) {            throw new RuntimeException( e.toString() );        }    }}

⌨️ 快捷键说明

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