Ideally,select-keys returns a map with keys in the order of the key seq vector. But I find that it happens only when the number of your keys is less than 10
(def params {:resource-total-calls-abandoned 1, :resource-idle-time 5, :date "2016-12-31", :resource-wrap-up-time 1, :agent-talk-time 1, :resource-work-offers 3, :aux-in-time 1, :user-id 2183, :resource-not-ready-time 3, :split 1, :aux-out-time 1, :resource-logged-in-time 1, :hold-time 115, :acd-calls 1})
(select-keys params [:user-id
:date
:split
:resource-logged-in-time
:agent-talk-time
:resource-wrap-up-time
:hold-time
:acd-calls
:resource-total-calls-abandoned
])
Here is my result:
{:user-id 2183, :date "2016-12-31", :split 1, :resource-logged-in-time 1, :agent-talk-time 1, :resource-wrap-up-time 1, :hold-time 115, :acd-calls 1, :resource-total-calls-abandoned 1}
If I have more than 10 keys to be selected from a huge map , the order of the map will be different from the order of keys
(select-keys params [:user-id
:date
:split
:resource-logged-in-time
:agent-talk-time
:resource-wrap-up-time
:hold-time
:acd-calls
:resource-total-calls-abandoned
:aux-in-time
])
The result will be different :
{:resource-total-calls-abandoned 1, :date "2016-12-31", :resource-wrap-up-time 1, :agent-talk-time 1, :aux-in-time 1, :user-id 2183, :split 1, :resource-logged-in-time 1, :hold-time 115, :acd-calls 1}
Any other ideas about returning a map with keys in the order of the keyseq vector no matter how many keys you want to select ?