Java字典<String, List<Object>>

5
我使用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个回答

10

使用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推荐的格式/命名风格所做的更正。


0
Java有一个叫做HashMap的东西,可能会对你有用。这是HashMap的文档。
例子:
HashMap<string, List<Block>> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接