如何拆分下一个入口集迭代器?

时间:2013-11-22 17:36:12

标签: java python split jython

您好我正在尝试从hashmap中拆分下一个迭代器入口集,但我无法让它工作。

我有一个hashmap,其中我放了两件事,第一件是发件人,第二件是渠道:

channelList = HashMap()
channelList.put(playername, channelname) #have on mind that those can be changed, depending on what user types in

我有这个迭代器:

it = channelList.entrySet().iterator()
next = it.next()

但是当我下一次打印时,它在hashmap的参数之间有“=”。例如,如果playername是PLAYER并且频道名称是balkan,我得到的结果是:PLAYER = balkan。问题是,我如何在每一个下一次获得PLAYERNAME。我尝试像这样拆分它,但它不起作用:

       next = it.next()
       realnext = next.split("=")
       realrealnext = realnext.split("=")[0]

请记住,我使用while循环检查每一个下一个:

while it.hasNext():

提前致谢,Amar!

P.S。我是jython / python程序员。

2 个答案:

答案 0 :(得分:1)

问题是您正在将java.util.Map.Entry转换为字符串。试试这个

#!/usr/bin/jython
import java.util.HashMap

channelList = java.util.HashMap()
channelList.put("Hello", "World")
it = channelList.entrySet().iterator()
while (it.hasNext()):
    e = it.next()
    print("key = " + e.getKey())
    print("value = " + e.getValue())

我的系统运行如下 -

$ ./test.py
key = Hello
value = World
$

答案 1 :(得分:0)

您不应该引用Map ....List的引用,这是令人困惑的。您应该将其命名为channelMap

接下来,您的地图应使用通用类型来设置他们正在使用的元素,例如

Map<String, Channel> channelMap = new HashMap<>();

通过这种方式,您可以安全地使用

Iterator<Entry<String, Channel>> it = channelMap.entrySet().iterator();

并且可以访问it.next().getKey()(请注意,HashMap中的元素顺序基于hashCode,如果其密钥对Player2 Player1这样的订单不感到惊讶},Player 3)。


无论如何,如果您只想迭代所有键,那么可能

for (String key: channelMap.keySet()){
    System.out.println(key);
}

将是更好的解决方案。