MCPcopy Create free account
hub / github.com/davidgiven/luje / removeLeftmost

Method removeLeftmost

lib/java/util/TreeMap.java:1895–1934  ·  view source on GitHub ↗
(Node<K, V> node)

Source from the content-addressed store, hash-verified

1893 }
1894
1895 void removeLeftmost(Node<K, V> node) {
1896 int index = node.left_idx;
1897 if (node.size == 1) {
1898 deleteNode(node);
1899 } else if (node.prev != null && (Node.NODE_SIZE - 1 - node.prev.right_idx) > node.size) {
1900 // move all to prev node and kill it
1901 Node<K, V> prev = node.prev;
1902 int size = node.right_idx - index;
1903 System.arraycopy(node.keys, index + 1, prev.keys, prev.right_idx + 1, size);
1904 System.arraycopy(node.values, index + 1, prev.values, prev.right_idx + 1, size);
1905 prev.right_idx += size;
1906 prev.size += size;
1907 deleteNode(node);
1908 } else if (node.next != null && (node.next.left_idx) > node.size) {
1909 // move all to next node and kill it
1910 Node<K, V> next = node.next;
1911 int size = node.right_idx - index;
1912 int next_new_left = next.left_idx - size;
1913 next.left_idx = next_new_left;
1914 System.arraycopy(node.keys, index + 1, next.keys, next_new_left, size);
1915 System.arraycopy(node.values, index + 1, next.values, next_new_left, size);
1916 next.size += size;
1917 deleteNode(node);
1918 } else {
1919 node.keys[index] = null;
1920 node.values[index] = null;
1921 node.left_idx++;
1922 node.size--;
1923 Node<K, V> prev = node.prev;
1924 if (prev != null && prev.size == 1) {
1925 node.size++;
1926 node.left_idx--;
1927 node.keys [node.left_idx] = prev.keys [prev.left_idx];
1928 node.values[node.left_idx] = prev.values[prev.left_idx];
1929 deleteNode(prev);
1930 }
1931 }
1932 modCount++;
1933 size--;
1934 }
1935
1936 void removeRightmost(Node<K, V> node) {
1937 int index = node.right_idx;

Callers 1

removeMethod · 0.95

Calls 2

deleteNodeMethod · 0.95
arraycopyMethod · 0.95

Tested by

no test coverage detected