Java字典<string,list <object =“”>&gt; </string,>

时间:2012-10-15 19:34:33

标签: java dictionary

我正在与XNA游戏工作室制作游戏,现在我想用Java重写它。它就像2D Minecraft克隆。对于碰撞检测,我必须遍历游戏中的所有块以检查玩家是否与块碰撞。由于有大量的块,所以不可能这样做,所以我制作了一个网格系统。我将世界划分为包含块的网格,并将它们放入字典中。

Dictionary<string, List<Block>> gameBlocks;

现在我只需遍历当前网格中的块。

这是注册块的方法:

public void RegisterBlock(Block block)
{
    idX = (int)(block.blockPosition.X / width);
    idY = (int)(block.blockPosition.Y / height);
    string id = idX.ToString() + "_" + idY.ToString();
    if (gameBlocks.ContainsKey(id))
    {
        gameBlocks[id].Add(block);
    }
    else
    {
        gameBlocks.Add(id, new List<Block>());
        gameBlocks[id].Add(block);
    }
}

现在我正在尝试用Java重写它,但我不知道如何将某些内容放入字典中。

2 个答案:

答案 0 :(得分:7)

使用Java的Map接口和HashMap类。你的方法在Java中看起来像这样:

private Map<String, List<Block>> gameBlocks = new HashMap<String, List<Block>>(); // Java 6
// OR:
private Map<String, List<Block>> gameBlocks = new HashMap<>(); // Java 7

public void registerBlock(Block block) {
    idX = (int)(block.blockPosition.X / width);
    idY = (int)(block.blockPosition.Y / height);
    String id = idX + "_" + idY;
    if (gameBlocks.containsKey(id)) {
        gameBlocks.get(id).add(block);
    } else {
        gameBlocks.put(id, new ArrayList<Block>());
        gameBlocks.get(id).add(block);
    }
}

请注意我为Java建议的格式化/命名样式所做的一些更正。

答案 1 :(得分:0)

Java有一些名为HashMap的东西可能对你有用。以下是HashMap的文档。

示例:

HashMap<string, List<Block>>