Clojure into-array迭代数组

时间:2016-01-29 19:34:29

标签: java arrays clojure lisp

我试图通过主要的Java体验来改变Clojure,我正在尝试解决Clojure中的问题。我可以用Java做到这一点并不是很难转换为Clojure但我只是看不出它会如何工作....

我想要做的是遍历一个字符串数组,然后将字符串放入映射中,我的伪代码在下面,但看起来很像Java

      private static void putToMap(String w) 
      {
        String thisw = getthisw(w);
        if (!map.containsKey(thisw)) 
        {
          map.put(thisw, w); 
          map.add(w);
        } 
      }

      private static String getthisw(String w) 
      {
        char [] wArray = w.toLowerCase().toCwarArray();
        Arrays.sort(wArray);
        return new String(wArray);
      }

这就是我在Clojure中尝试的方法,但我不知道如果有任何数据,我将如何从输出中给出的数据中获取数据?

我从运行我得到的输出是这个....我将如何使用它迭代?如果是这样我将如何使用给出的数组?

#<String[] [Ljava.lang.String;@790da477>

我的Clojure功能......

(def strings '["one" "two" "three" "four" "five" ])

(defn sort [strings]
  (into-array String strings))

输入示例:

Array of Strings ["ONE"] ["TWO"] ["THREE"] ["FOUR"] ["FIVE"]

输出示例:

Map with strings converted to lowercase "one" "two" "three" "four" "five"

1 个答案:

答案 0 :(得分:3)

在这里确切地说出你想要的东西真的很难,但似乎你正在用Java的方式思考。一个简单的map会将您的字符串转换为其小写对应列表。

(def strings ["ONE" "TWO" "THREE" "FOUR" "FIVE"])

(defn convert [strings]
  (prn (map clojure.string/lower-case strings)))

然后你可以在你的REPL中调用它并获得:

user=> (convert strings)
("one" "two" "three" "four" "five")