Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/api/TreeNode.java @ 12:fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
author | shoshi |
---|---|
date | Wed, 11 May 2011 03:34:01 +0900 |
parents | 85061e874775 |
children | 8bf59f161b23 |
line wrap: on
line source
package treecms.api; import java.nio.ByteBuffer; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; /** * DoubleLinkedなNodeの実装です.SingleLinkedなNodeの実装と違い,親の情報を保持します. * 非破壊的木構造の実装では,Nodeは子どもの情報しか持っていません.これは,一つのNodeに対して複数の親が存在するためです. * 木構造内のあるNodeへのRootNodeからのパスを検索する手間を省くことが出来ます. * * なのでSingleLinkedとDoubleLinkedを分けて,DoubleLinkedはSingleLinkedを内包した形で実装します. * TreeNodeがNodeのインターフェイスを継承していないのは,継承するとSingleLinkedなNodeに子供として追加できるようになるからです. * * また,TreeNodeを編集したときは非破壊的に編集されず、破壊的に編集されます. * @author shoshi */ public interface TreeNode { /* * 属性関連のメソッド */ public ByteBuffer get(ByteBuffer _key); public Map<ByteBuffer,ByteBuffer> getAll(); public void put(ByteBuffer _key,ByteBuffer _value); public void putAll(Map<ByteBuffer,ByteBuffer> _map); public void remove(ByteBuffer _key); public void removeAll(Set<ByteBuffer> _keys); public void clear(); /* * 子供関連のメソッド */ public Iterator<TreeNode> getChildren(); public void addChild(TreeNode _n); public void addChildren(List<TreeNode> _list); public void removeChild(TreeNode _n); public void removeChildren(List<TreeNode> _list); public void clearChildren(); /* * 親関連のメソッド */ public NodeID getID(); public Forest getForest(); public TreeNode getParent(); public Node getNode(); }