2013-11-21 2 views
0

Я bukkit jython/python плагин кодер, но я застрял здесь. У меня есть array.array (так ArrayList), который предварительно создается сервером и возвращает список онлайн-игроков.Проверьте, есть ли каждый конкретный элемент в списке в hashmap?

Вот это:

online = Bukkit.getOnlinePlayers() 

Так что я хочу? (Проверить #hashcomments)

Я создал эту HashMap():

channelList = HashMap() 

@hook.command("channel", usage="/channel [channelname]", desc="Use this command to join an channel!", 
       aliases = ["c", "cjoin", "cj"]) 
def channel(sender, command, args): 
    channel = args[0] 
    channelList.put(sender, channel) #so if player does /channel balkan command it puts his name and channel (balkan in this case) in hashmap... 
    sender.sendMessage("%sYou've successfully joined %s %s %s channel!"%(bukkit.ChatColor.DARK_AQUA, bukkit.ChatColor.AQUA, channel, bukkit.ChatColor.DARK_AQUA)) 
    return True 

@hook.event("player.PlayerChatEvent", "NORMAL") 
def onPlayerChatEvent(event): 
    p = event.getPlayer() 
    message = event.getMessage() 
    messagesubstring = message[:1] 
    event.setCancelled(1) 
    playername = event.getPlayer().getDisplayName() 
     if messagesubstring == "!": 
      plist1 = #How do I get this list? It's list of players that are in HashMap with "balkan" as second hashmap argument... 
      userChannel = "balkan" 
      online = Bukkit.getOnlinePlayers() 
      lenghtonline = len(online) 
      b = lenghtonline - 1 
      a = 0 
      if a <= b: 
      if channelList.get(p) == userChannel: 
       plist1.sendMessage("blabla") 

Спасибо заранее!

ответ

0

Вы можете использовать HashMap.entrySet() итерировать вхождений в HashMap:

Java:

for(Entry<String, String> e: channelList.entrySet()){ 
    if(userChannel.equals(e.getValue()){ 
      pist1.add(e.getKey()); 
    } 
} 

В Jython вам, возможно, придется назвать так:

Iterator<Entry<String, String>> it = channelList.entrySet().iterator(); 
while(it.hasNext()){ 
    Entry<String, String> e = it.next(); 
    ... 
} 
+0

Я не совсем уверен, Я понимаю тебя. Я не думаю, что это выведет список массивов со всеми игровыми именами, которые раньше присоединились к балканскому чату? Подводя итог: у меня есть список массивов онлайн-игроков, которые мне нужны для проверки того, находятся ли эти игроки в hashmap, но я хочу получить список онлайн-игроков из hashmap, которые находятся в балканском чате (он же ранее был помещен в HashMap по команде) –

+0

Эта небольшая выдержка показывает, как итерировать значения карты, заполненной 'channelList.put (sender, channel)'. Извините, если не понял вашу проблему. –

Смежные вопросы