如何用Clojure找到最后一次出现元素的位置?

时间:2013-03-03 01:03:11

标签: clojure

我想找到序列中元素最后出现的位置。测试我想出的一些解决方案,

user> (def numbers (repeatedly 100 #(rand-int 100)))
#'user/numbers

user> (time ((zipmap numbers (range)) 22))
"Elapsed time: 0.865193 msecs"
90

user> (time (last (keep-indexed #(if (= 22 %2) %1) numbers)))
"Elapsed time: 1.600483 msecs"
90

是否有更简洁的内置功能呢?

1 个答案:

答案 0 :(得分:1)

将对象强制转换为正确的类型后,可以使用lastIndexOf

(.lastIndexOf numbers (int 22))

此处记录了该方法:http://docs.oracle.com/javase/6/docs/api/java/util/List.html#lastIndexOf(java.lang.Object)