Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/nodepath/DefaultNodePath.java @ 310:474728dcfdb8
add PathType
author | tatsuki |
---|---|
date | Thu, 26 Jan 2017 23:44:14 +0900 |
parents | 201cc75a9984 |
children | a0529572fbcb |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath; import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair; import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; import java.nio.ByteBuffer; import java.util.Iterator; public class DefaultNodePath implements NodePath { private final List<Integer> path; public static void main(String args[]) { DefaultNodePath p = new DefaultNodePath(); p = p.add(1).add(2).add(3).add(4); System.out.println(p.toString()); } public DefaultNodePath() { path = new List<Integer>().addLast(-1); } public DefaultNodePath(int num) { path = new List<Integer>().addLast(num); } public DefaultNodePath(String nodePath) { List<Integer> _path = new List<>(); String[] nums = nodePath.split(","); for (String num : nums) { if (num.equals("-1")) _path = _path.addLast(-1); else _path = _path.addLast(Integer.parseInt(num)); } this.path = _path; } private DefaultNodePath(List<Integer> path) { this.path = path; } @Override public Iterator<Integer> iterator() { return path.iterator(); } @Override public int get(int index) { return path.get(index); } @Override public DefaultNodePath add(int pos) { List<Integer> newPath = path.addLast(pos); return new DefaultNodePath(newPath); } @Override public NodePath addHead(int pos) { List<Integer> newPath = path.add(0, pos); return new DefaultNodePath(newPath); } @Override public Pair<Integer, NodePath> pop() { Integer head = path.head(); List<Integer> tail = path.deleteHead(); return new Pair<>(head, new DefaultNodePath(tail)); } @Override public Pair<Integer, NodePath> last() { Integer last = path.tail(); List<Integer> list = path.deleteLast(); return new Pair<>(last, new DefaultNodePath(list)); } @Override public String toString() { return path.toString(); } @Override public int size() { return path.length(); } //PATHの一番後ろを取り除いたPATHを新しく作って返す // EXAMPLE <0,0,3> → <0,0> @Override public NodePath tail() { List<Integer> tail = path.deleteLast(); return new DefaultNodePath(tail); } public List<DefaultNodePath> inits() { List<DefaultNodePath> paths = new List<>(); List<Integer> coursePath = new List<>(); for (Integer tmpPath : path) { List<Integer> tmp = coursePath.addLast(tmpPath); paths = paths.addLast(new DefaultNodePath(tmp)); coursePath = tmp; } return paths; } //以下使わない @Override public String getKey() { return null; } @Override public ByteBuffer getValue() { return null; } @Override public PathType getPathType() { return PathType.Default; } @Override // Defultでは今の所使わない public NodePath setType(PathType type) { return null; } }