LinkedList Java 的动态名称



我有一个某种类型的LinkedList <Structure>。在循环访问目录时,我有一些文件夹可以读取它。我想动态地使用读取目录的名称创建这些LinkedList

即如果目录读取KitchenLobby。我想要:

LinkedList<Structure> Kitchen = new LinkedList<Structure>();
LinkedList<Strucutre> Lobby = new LinkedList<Strucure>();

结构对象具有(String, ImageIcon, ImageIcon, ImageIcon)

这里的问题是根据读取目录接收到的名称来命名 LinkedList。

URL url = getClass().getResource("/path/to/directory/");
File file = new File(url.getPath() + "/");
File[] directories = file.listFiles();
for (int i = 0; i < directories.length; i++) {
     if (directories[i].isDirectory()) {
         // if directory then create LinkedList with that name
     }
}
在我看来

,你想要一个新的类,例如

class Room {
    private final String name;
    private final LinkedList<Structure> elements;
    ...
}

或者,您可以有一个Map<String, LinkedList<Structure>>,并在加载不同文件时填充地图。

然后,在加载每个房间时,可以提供对象的名称。区分变量(有名称)和对象(没有名称,除非您添加一个字段来表示该名称,就像我上面所做的那样)非常重要。变量名称通常只与代码相关 - 因此"动态生成的变量名称"的想法毫无意义。

你可以通过使用一个Map<String, LinkedList<Structure>>来解决这个问题,其中映射的字符串键是目录名称。然后,您可以通过目录字符串轻松访问相关的链接列表。

你不能

这样做。变量的名称只是用于编程的符号。在运行时,所有这些都简化为对内存中某个空间的引用。此外,您或其他任何人都无法实际看到这些变量的名称,因此无论如何这里都没有意义。

Java变量名称本身不是变量,但你可以使用MultiMap<String,LinkedList>>。这将有助于处理重复的名称条目。

最新更新