MCPcopy Index your code
hub / github.com/clojure/clojure / assoc

Method assoc

src/jvm/clojure/lang/PersistentArrayMap.java:247–268  ·  view source on GitHub ↗
(Object key, Object val)

Source from the content-addressed store, hash-verified

245}
246
247public IPersistentMap assoc(Object key, Object val){
248 int i = indexOf(key);
249 Object[] newArray;
250 if(i >= 0) //already have key, same-sized replacement
251 {
252 if(array[i + 1] == val) //no change, no op
253 return this;
254 newArray = array.clone();
255 newArray[i + 1] = val;
256 }
257 else //didn't have key, grow
258 {
259 if(array.length >= HASHTABLE_THRESHOLD)
260 return createHT(array).assoc(key, val);
261 newArray = new Object[array.length + 2];
262 if(array.length > 0)
263 System.arraycopy(array, 0, newArray, 0, array.length);
264 newArray[newArray.length-2] = key;
265 newArray[newArray.length-1] = val;
266 }
267 return create(newArray);
268}
269
270public IPersistentMap without(Object key){
271 int i = indexOf(key);

Callers

nothing calls this directly

Calls 5

indexOfMethod · 0.95
createHTMethod · 0.95
createMethod · 0.95
cloneMethod · 0.80
assocMethod · 0.65

Tested by

no test coverage detected