您好我正在尝试从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程序员。
答案 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);
}
将是更好的解决方案。