我应该使用什么而不是通用列表数组?

时间:2017-07-16 09:20:21

标签: java arrays list generics

我想创建一个拥有20x30字段的游戏,我首先想到的是每个字段都是一个列表(因为有时一些字段包含多个对象),但在阅读了几个关于通用数组的问题之后列表,我意识到这不是一个好的解决方案。

游戏将是一个非常简单的Raft版本,在控制台中使用“左”这样的命令播放它,这样角色就会向左移动一个字段。 那么你能推荐一个好的容器或其他东西来设计这些领域吗?

游戏插图: http://imgur.com/a/8YpeA

2 个答案:

答案 0 :(得分:1)

如果您要实现固定大小的矩形“播放曲面”,那么我建议Cell[][] Cell类型是一个自定义类,表示曲面上单元格的状态。

此处不需要使用泛型......除非您尝试实现可在许多游戏中使用的抽象。

此外,不需要类似列表的功能。您不会删除或添加单元格。你可以将棋子/玩家/任何东西从一个牢房移动到另一个牢房。

(如果您的电路板不是基于谨慎的单元,您将需要使用其他方法。但任何具有有限数量的离散单元的2D播放表面都可以以某种方式映射到Java阵列。)

  

那么你能推荐一个好的容器或者设计领域的东西吗?

图书馆和工具的建议是OFF-TOPIC。

答案 1 :(得分:1)

有两种方法可以创建通用数组:

  1. 创建类型的私有静态内部类:

    transient Node<K, V>[] table;
    
    public MyHashMap(int limit) {
        this.limit = limit;
        table = (Node<K, V>[]) new Node[limit];
    }
    
  2. 使用Array.newInstance(类,大小)

  3. 此外,使用泛型进行自定义实现并不是一个好选择。