【发布时间】:2011-05-17 20:14:43
【问题描述】:
将数据结构转换为 Java 集合的 Clojure 惯用方式是什么,具体来说:
-
[]到java.util.ArrayList -
{}到java.util.HashMap -
#{}到java.util.HashSet -
()到java.util.LinkedList
是否有 clojure.contrib 库可以执行此操作?
用例:为了让 Clojure 轻松融入我的组织,我正在考虑为 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") ... } ...] 结构传递给我的mock 并将其转换为所需的Java 集合,以便它可以以预期的格式返回给调用者。
【问题讨论】:
-
如果方法需要返回
java.util.List,则无需转换,因为clojure向量是一个List。如果所需的类型是特定的实现类,您应该只需要转换,例如ArrayList.
标签: java data-structures collections clojure