Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/RedBlackTreeNodePath.java @ 308:201cc75a9984
change Red Black Tree Edit Path Extends
author | tatsuki |
---|---|
date | Thu, 26 Jan 2017 15:23:25 +0900 |
parents | 67c330ef2472 |
children | f8e75ef7ac5d |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath; import jp.ac.u_ryukyu.ie.cr.jungle.store.NulIterator; import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair; import java.nio.ByteBuffer; import java.util.Iterator; public class RedBlackTreeNodePath implements NodePath { private final String key; private final ByteBuffer value; /** * traverserを使うかどうかのフラグ * -2だった場合Traverserを使わない * 主にノードの追加、削除等回転処理が行われる処理の場合に使う * <p> * それ以外の値だった場合Traverserを使う * Attribute関係とか * intの理由はgetで受け取れるから * <p> * flagはaddでセットする * ココらへんは後でちゃんと直す */ private int flags; public RedBlackTreeNodePath(String key, ByteBuffer value) { this.key = key; this.value = value; } private RedBlackTreeNodePath(String key, ByteBuffer value, int flags) { this.key = key; this.value = value; this.flags = flags; } @Override public String getKey() { return key; } @Override public ByteBuffer getValue() { return value; } @Override public PathType getPathType() { return PathType.RedBlack; } //以下使わない @Override public Iterator<Integer> iterator() { return new NulIterator<>(); } @Override public int get(int index) { return flags; } @Override public NodePath add(int pos) { return new RedBlackTreeNodePath(key, value, pos); } @Override public NodePath addHead(int pos) { return null; } @Override public Pair<Integer, NodePath> pop() { return null; } @Override public Pair<Integer, NodePath> last() { return null; } @Override public String toString() { return key + value; } @Override public int size() { return 0; } //PATHの一番後ろを取り除いたPATHを新しく作って返す // EXAMPLE <0,0,3> → <0,0> @Override public NodePath tail() { return null; } }