📄 dxdiskhashiterator.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 + -