py4j:dict到JAVA地图

时间:2013-04-04 09:56:38

标签: java python python-3.x py4j

我目前正在使用python3访问HBase。我正在做的方法是使用py4j调用我正在编写的JAVA API来访问HBase。

我有一个与创建Put对象相关的问题,该对象采用限定符和值。

我想将字典传递给需要散列映射的JAVA类。是否可以通过py4j。

我不想迭代地为每个列限定符调用Put。我想将dict传递给py4j,它应该在JAVA端作为HashMap接收。

你能否请一些提示/指示如何做到这一点......

1 个答案:

答案 0 :(得分:2)

有两种方法可以做你想做的事:

  1. 您可以在python端create a java.util.HashMap() and use it as a dict。如果你经常传递字典,这很好,但你不经常在python端修改它。如果在java端修改字典并且你想在python端看到修改,这也很好。
  2. Py4J在调用Java方法时可以automatically convert a python dict to a HashMap。请注意,将复制字典,并且在Java端执行的任何更改都不会反映在Python端。
  3. 最简单的解决方案是#1我相信:

    >>> m = gateway.jvm.java.util.HashMap()
    >>> m["a"] = 0
    >>> m.put("b",1)
    >>> m
    {u'a': 0, u'b': 1}
    >>> u"b" in m
    True
    >>> del(m["a"])
    >>> m
    {u'b': 1}
    >>> m["c"] = 2