我有一个某种类型的LinkedList
<Structure>
。在循环访问目录时,我有一些文件夹可以读取它。我想动态地使用读取目录的名称创建这些LinkedList
。
即如果目录读取Kitchen
或Lobby
。我想要:
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>