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

Method removeFromIterator

lib/java/util/TreeMap.java:2050–2096  ·  view source on GitHub ↗
(Node<K, V> node, int index)

Source from the content-addressed store, hash-verified

2048 }
2049
2050 void removeFromIterator(Node<K, V> node, int index) {
2051 if (node.size == 1) {
2052 // it is safe to delete the whole node here.
2053 // iterator already moved to the next node;
2054 deleteNode(node);
2055 } else {
2056 int left_idx = node.left_idx;
2057 if (index == left_idx) {
2058 Node<K, V> prev = node.prev;
2059 if (prev != null && prev.size == 1) {
2060 node.keys [left_idx] = prev.keys [prev.left_idx];
2061 node.values[left_idx] = prev.values[prev.left_idx];
2062 deleteNode(prev);
2063 } else {
2064 node.keys [left_idx] = null;
2065 node.values[left_idx] = null;
2066 node.left_idx++;
2067 node.size--;
2068 }
2069 } else if (index == node.right_idx) {
2070 node.keys [index] = null;
2071 node.values[index] = null;
2072 node.right_idx--;
2073 node.size--;
2074 } else {
2075 int moveFromRight = node.right_idx - index;
2076 int moveFromLeft = index - left_idx;
2077 if (moveFromRight <= moveFromLeft) {
2078 System.arraycopy(node.keys, index + 1, node.keys, index, moveFromRight );
2079 System.arraycopy(node.values, index + 1, node.values, index, moveFromRight );
2080 node.keys [node.right_idx] = null;
2081 node.values[node.right_idx] = null;
2082 node.right_idx--;
2083 node.size--;
2084 } else {
2085 System.arraycopy(node.keys, left_idx, node.keys, left_idx+ 1, moveFromLeft);
2086 System.arraycopy(node.values, left_idx, node.values, left_idx+ 1, moveFromLeft);
2087 node.keys [left_idx] = null;
2088 node.values[left_idx] = null;
2089 node.left_idx++;
2090 node.size--;
2091 }
2092 }
2093 }
2094 modCount++;
2095 size--;
2096 }
2097
2098 private void deleteNode(Node<K, V> node) {
2099 if (node.right == null) {

Callers 1

removeMethod · 0.80

Calls 2

deleteNodeMethod · 0.95
arraycopyMethod · 0.95

Tested by

no test coverage detected