public List<V> findAllEnds(String s) { CharTreeNode<V> node = root; int length = s.length(); List<V> list = new ArrayList<V>(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(length - i - 1)); addIfNotNull(list, node); } return list; }
public synchronized CharTree<V> append(char[] chars, V value) { if (root == null) root = new SingleCharTreeNode<V>(); try { char b = chars[0]; root = root.append(b); CharTreeNode<V> temp = root.next(b); CharTreeNode<V> prev = root; char p = b; for (int i = 1; i < chars.length; i++) { b = chars[i]; CharTreeNode<V> next = temp.append(b); prev.set(p, next); prev = next; temp = next.next(b); p = b; } if (temp.value == null) size++; temp.value = value; } catch (Exception e) { throw new IllegalStateException("Cannot append '" + new String(chars) + "'", e); } return this; }
public CharTree<V> append(char[] chars, V value) { if (root == null) root = new SingleCharTreeNode<V>(); char b = chars[0]; root = root.append(b); CharTreeNode<V> temp = root.next(b); CharTreeNode<V> prev = root; char p = b; for (int i = 1; i < chars.length; i++) { b = chars[i]; CharTreeNode<V> next = temp.append(b); prev.set(p, next); prev = next; temp = next.next(b); p = b; } if (temp.value == null) size++; temp.value = value; return this; }
public List<V> findAllEnds(char[] chars, int offset, int length) { CharTreeNode<V> node = root; int l = chars.length - 1; List<V> list = new ArrayList<V>(); for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[l - i]); addIfNotNull(list, node); } return list; }
public V findEnds(String s) { CharTreeNode<V> node = root; int length = s.length(); for (int i = 0; i < length && node != null && node.value == null; i++) { node = node.next(s.charAt(length - i - 1)); } return node == null ? null : node.value; }
public V findEnds(char[] chars, int offset, int length) { CharTreeNode<V> node = root; int l = chars.length - 1; for (int i = offset; i < offset + length && node != null && node.value == null; i++) { node = node.next(chars[l - i]); } return node == null ? null : node.value; }
public List<V> findAllEnds(char[] chars, int offset, int length) { CharTreeNode<V> node = root; int l = chars.length - 1; List<V> list = new ArrayList<V>(); for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[l - i]); addIfNotNull(list, node); } return list; }
public List<V> findAllStarts(String s) { CharTreeNode<V> node = root; List<V> list = new ArrayList<V>(); int length = s.length(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(i)); addIfNotNull(list, node); } return list; }
public V get(char[] chars, int offset, int length) { CharTreeNode<V> node = root; for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[i]); } return node == null ? null : node.value; }
public List<V> findAllStarts(String s) { CharTreeNode<V> node = root; List<V> list = new ArrayList<V>(); int length = s.length(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(i)); addIfNotNull(list, node); } return list; }
public List<V> findAllStarts(char[] chars, int offset, int length) { CharTreeNode<V> node = root; List<V> list = new ArrayList<V>(); for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[i]); addIfNotNull(list, node); } return list; }
public V findStarts(String s) { CharTreeNode<V> node = root; int length = s.length(); for (int i = 0; i < length && node != null && node.value == null; i++) { node = node.next(s.charAt(i)); } return node == null ? null : node.value; }
public V findStarts(char[] chars, int offset, int length) { CharTreeNode<V> node = root; for (int i = offset; i < offset + length && node != null && node.value == null; i++) { node = node.next(chars[i]); } return node == null ? null : node.value; }
public V get(String s) { CharTreeNode<V> node = root; int length = s.length(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(i)); } return node == null ? null : node.value; }
public V get(char[] chars, int offset, int length) { CharTreeNode<V> node = root; for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[i]); } return node == null ? null : node.value; }
public V findEnds(char[] chars, int offset, int length) { CharTreeNode<V> node = root; int l = chars.length - 1; for (int i = offset; i < offset + length && node != null && node.value == null; i++) { node = node.next(chars[l - i]); } return node == null ? null : node.value; }
public V get(String s) { CharTreeNode<V> node = root; int length = s.length(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(i)); } return node == null ? null : node.value; }
public List<V> findAllStarts(char[] chars, int offset, int length) { CharTreeNode<V> node = root; List<V> list = new ArrayList<V>(); for (int i = offset; i < offset + length && node != null; i++) { node = node.next(chars[i]); addIfNotNull(list, node); } return list; }
public List<V> findAllEnds(String s) { CharTreeNode<V> node = root; int length = s.length(); List<V> list = new ArrayList<V>(); for (int i = 0; i < length && node != null; i++) { node = node.next(s.charAt(length - i - 1)); addIfNotNull(list, node); } return list; }