【问题标题】:Checking if every specific item in list is in hashmap?检查列表中的每个特定项目是否都在哈希图中?
【发布时间】:2013-12-06 05:34:18
【问题描述】:

我是 bukkit jython/python 插件编码器,但我被困在这里。我有一个由服务器预先生成的array.array(即ArrayList),并返回在线玩家列表。

就是这样:

online = Bukkit.getOnlinePlayers()

那我想要什么? (检查#hashcmets)

我创建了这个 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")

提前致谢!

【问题讨论】:

    标签: java python arrays hashmap jython


    【解决方案1】:

    您可以使用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();
        ...
    }
    

    【讨论】:

    • 我不确定我是否理解你。我不认为这会输出一个包含所有之前加入巴尔干聊天的玩家姓名的数组列表?总结一下:我有一个在线玩家的数组列表,我需要检查这些玩家是否在 hashmap 中,但我想从 hashmap 中获取 balkan chat 中的在线玩家列表(也就是以前通过命令放入 HashMap )
    • 这个简短的摘录展示了如何迭代用channelList.put(sender, channel) 填充的地图的值。如果不明白您的问题,我很抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2021-10-20
    • 2012-02-19
    • 2011-05-30
    • 2020-08-08
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多