Clojure使用Mongo Java驱动时如何将字符串列表转为ServerAddress对象列表
解决方案
首先确保你在命名空间声明中导入了ServerAddress类,如果需要和原Java逻辑一致生成LinkedList还需要导入java.util.LinkedList:
(ns 你的命名空间路径 (:import com.mongodb.MongoClientURI com.mongodb.ServerAddress java.util.LinkedList))
在你已有代码的基础上,用map遍历所有主机字符串,逐个构造ServerAddress实例即可:
;; 你已有的代码 (def uri (MongoClientURI. "mongodb://xxx:***@url:27017/test?readPreference=primary")) (def hosts (.getHosts uri)) ;; 转换为ServerAddress类型的序列,Clojure环境下直接使用这个即可 (def server-address-seq (map #(ServerAddress. %) hosts)) ;; 如果要和原Java逻辑完全对齐,生成LinkedList类型的服务列表用于Java方法交互 (def server-list (into (LinkedList.) server-address-seq))
上述代码和你给出的Java循环逻辑完全等价,匿名函数里的%代表每次遍历拿到的单个主机字符串参数。
内容的提问来源于stack exchange,提问作者arjunsv3691
相关产品推荐
相关产品推荐

