【发布时间】:2010-02-12 01:56:36
【问题描述】:
我有一个带有数值的普通哈希图,并且想检索它的内容,最好是在一个列表中(但可以解决)。
可以吗?
【问题讨论】:
我有一个带有数值的普通哈希图,并且想检索它的内容,最好是在一个列表中(但可以解决)。
可以吗?
【问题讨论】:
试试这个:
library(rJava)
.jinit()
# create a hash map
hm<-.jnew("java/util/HashMap")
# using jrcall instead of jcall, since jrcall uses reflection to get types
.jrcall(hm,"put","one", "1")
.jrcall(hm,"put","two","2")
.jrcall(hm,"put","three", "3")
# convert to R list
keySet<-.jrcall(hm,"keySet")
an_iter<-.jrcall(keySet,"iterator")
aList <- list()
while(.jrcall(an_iter,"hasNext")){
key <- .jrcall(an_iter,"next");
aList[[key]] <- .jrcall(hm,"get",key)
}
请注意,使用 .jrcall 的效率低于 .jcall。但是对于我的一生,我无法使用 .jcall 获得正确的方法签名。我想知道这是否与缺乏泛型有关。
【讨论】:
我自己从未这样做过,但有一个示例 in the rJava documentation 使用 with 函数创建和使用 HashMap:
HashMap <- J("java.util.HashMap")
with( HashMap, new( SimpleEntry, "key", "value" ) )
with( HashMap, SimpleEntry )
【讨论】: