如何以Clojure的惯用方式将数据结构转换为Java集合,具体地:
[]
转换为java.util.ArrayList
{}
转换为java.util.HashMap
#{}
转换为java.util.HashSet
()
转换为java.util.LinkedList
是否有 clojure.contrib 库可以做到这一点?
应用场景:为了更好地引入 Clojure 到我的组织中,我正在考虑为一个全 Java REST 服务器编写一个单元测试套件。我已经使用 Scala 编写了部分测试套件,但是我认为 Clojure 可能更好,因为宏支持能够减少大量样板代码(我需要测试几十个类似的 REST 服务调用)。
我正在使用 EasyMock 模拟数据库连接(是否有更好的方法?),我的模拟方法需要返回 java.util.List<java.util.Map<String, Object>>
类型的项目(表示数据库结果集)给调用方。我将传入一个[{ "first_name" "Joe" "last_name" "Smith" "date_of_birth" (date "1960-06-13") ... } ...]
结构到我的模拟函数中,并将其转换为所需的 Java 集合,以便以预期的格式返回给调用方。
java.util.List
,那么不需要进行转换,因为Clojure向量 就是List
。只有在需要特定实现类,例如ArrayList
时才需要转换。 - Alex Taggart