Yes, Set is implemented using a hash table. ObjectIdDict is for situations where you want to hash based on object identity (===) rather than equality (isequal).
On Sunday, November 22, 2015, Leonardo <[email protected]> wrote: > Of course I can use Dict (ObjectIdDict is a sort of Dict), adding entries > as previously written. > Set is even better, but elements of Set are accessed with hash? > E.g. "hello" in s of your example is executed in constant or linear time? > > Thanks > > Leonardo > > P.S. for my clarification: what is reccomended context of use for > ObjectIdDict? > > > Il giorno domenica 22 novembre 2015 19:05:58 UTC+1, Tim Holy ha scritto: >> >> Why can't you use Set or Dict? >> >> julia> s = Set{ASCIIString}() >> Set{ASCIIString}() >> >> julia> push!(s, "hello") >> Set(ASCIIString["hello"]) >> >> julia> push!(s, "world") >> Set(ASCIIString["hello","world"]) >> >> julia> "hello" in s >> true >> >> julia> "nope" in s >> false >> >> --Tim >> >> On Sunday, November 22, 2015 09:58:31 AM Leonardo wrote: >> > Hello, >> > I'm looking for an Hash table in Julia (or Hash Set, how is called in >> other >> > programming languages), to efficiently check existence of an element in >> > set, but I haven't found it. >> > I've found ObjectIdDict as alternative, defined as: >> > ObjectIdDict <: Dict{Any,Any} >> > where key and value are equals, capable to store reference any object >> (if >> > I'm not wrong). >> > It has a simple constructor: >> > d = ObjectIdDict() >> > (no type stored is specified, cause previous definition) >> > >> > But - also inspecting code of dict.jl in Base package - I haven't found >> a >> > simple method to add element in set like: >> > push!(d,obj) >> > but only the form >> > d[obj] = obj >> > works. This is correct way to do this? (potentially key and value can >> be >> > different ...) >> > >> > Many thanks in advance >> > >> > Leonardo >> >>
