📄 dxdiskhashnodeleaf.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-2000 by SMB GmbH. All rights reserved.//// $Id: DxDiskHashNodeLeaf.java,v 1.10 2000/11/09 10:43:06 daniela Exp $package org.ozoneDB.DxLib;import java.io.*;/** * Knoten als blatt des baumes. Enthaelt keine verzweigungen aber eventuell * mehrere key-data-paare. */public class DxDiskHashNodeLeaf extends DxDiskHashNode implements Externalizable { final static long serialVersionUID = 1; protected DxDiskHashMap grandParent; protected DxKeyData element; public DxDiskHashNodeLeaf( DxDiskHashMap _grandParent ) { grandParent = _grandParent; } public void empty() { element = null; } public DxKeyData element() { return element; } public boolean addForKey( Object data, Object key ) { //es ist noch kein element drin if (element == null) { element = grandParent.newKeyData(); element.set( key, data ); return true; } else { //es sind schon elemente da DxKeyData elem = element; while (elem != null) { if (elem.key.equals( key )) { break; } elem = elem.next; } //key ist noch nicht drin if (elem == null) { DxKeyData newElement = grandParent.newKeyData(); newElement.set( key, data ); newElement.next = element; element = newElement; return true; } else { //key ist schon da :( return false; } } } public Object elementForKey( Object key, int hashCode ) { DxKeyData elem = element; while (elem != null) { if (elem.key.equals( key )) { return elem.data; } elem = elem.next; } return null; } public Object removeForKey( Object key ) { DxKeyData elem = element; while (elem != null) { if (elem.key.equals( key )) { break; } elem = elem.next; } Object answer = null; if (elem != null) { answer = elem.data; //daten vom ersten element der liste hier eintragen elem.data = element.data; elem.key = element.key; //erstes element loeschen; evtl gibt es nur noch das eine element = element.next; } return answer; } public void writeExternal( ObjectOutput out ) throws IOException { byte c = 0; for (DxKeyData elem = element; elem != null; elem = elem.next) { c++; } out.writeByte( c ); DxKeyData elem = element; while (elem != null) { out.writeObject( elem.key ); out.writeObject( elem.data ); elem = elem.next; } } public void readExternal( ObjectInput in ) throws IOException, ClassNotFoundException { byte c = in.readByte(); element = grandParent.newKeyData(); element.set( in.readObject(), in.readObject() ); DxKeyData elem = element; for (int i = 1; i < c; i++) { elem.next = grandParent.newKeyData(); elem.next.set( in.readObject(), in.readObject() ); elem = elem.next; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -