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

Class PersistentHashMap

src/jvm/clojure/lang/PersistentHashMap.java:28–1364  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26 */
27
28public class PersistentHashMap extends APersistentMap implements IEditableCollection, IObj, IMapIterable, IKVReduce {
29
30private static final long serialVersionUID = -8682496769319143320L;
31
32final int count;
33final INode root;
34final boolean hasNull;
35final Object nullValue;
36final IPersistentMap _meta;
37
38final public static PersistentHashMap EMPTY = new PersistentHashMap(0, null, false, null);
39final private static Object NOT_FOUND = new Object();
40
41static public IPersistentMap create(Map other){
42 ITransientMap ret = EMPTY.asTransient();
43 for(Object o : other.entrySet())
44 {
45 Map.Entry e = (Entry) o;
46 ret = ret.assoc(e.getKey(), e.getValue());
47 }
48 return ret.persistent();
49}
50
51/*
52 * @param init {key1,val1,key2,val2,...}
53 */
54public static PersistentHashMap create(Object... init){
55 ITransientMap ret = EMPTY.asTransient();
56 for(int i = 0; i < init.length; i += 2)
57 {
58 ret = ret.assoc(init[i], init[i + 1]);
59 }
60 return (PersistentHashMap) ret.persistent();
61}
62
63public static PersistentHashMap createWithCheck(Object... init){
64 ITransientMap ret = EMPTY.asTransient();
65 for(int i = 0; i < init.length; i += 2)
66 {
67 ret = ret.assoc(init[i], init[i + 1]);
68 if(ret.count() != i/2 + 1)
69 throw new IllegalArgumentException("Duplicate key: " + init[i]);
70 }
71 return (PersistentHashMap) ret.persistent();
72}
73
74static public PersistentHashMap create(ISeq items){
75 ITransientMap ret = EMPTY.asTransient();
76 for(; items != null; items = items.next().next())
77 {
78 if(items.next() == null)
79 throw new IllegalArgumentException(String.format("No value supplied for key: %s", items.first()));
80 ret = ret.assoc(items.first(), RT.second(items));
81 }
82 return (PersistentHashMap) ret.persistent();
83}
84
85static public PersistentHashMap createWithCheck(ISeq items){

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected