【发布时间】:2014-01-24 16:14:10
【问题描述】:
我一直致力于用 Java 制作日历。这样做时,为了在应用程序运行时存储输入的信息,我已将信息导出到 txt 文件。现在,在每个应用程序运行开始时,我想从该文件中获取存储的信息以填充日历。代码方面,这意味着我想将每一行存储在数组的给定槽中,然后将数组附加到 arrayList:
String[] arrInfo = {eventName, eventLocation, eventTime, identifier};
for(int i = 0; i < numLines; i++)
{
line = br.readLine();
arrInfo[i%4] = line.toString();
if((i+1)%4 == 0)
{
HashMap<String, String[]> map = new HashMap<String, String[]>();
String name = arrInfo[3];
map.put(name, arrInfo);
events.add(map.get(name));
}
}
我使用映射来命名数组并将它们附加到数组列表(事件)中。我的问题是,当我保留代码原样时,添加到 arrayList 的最后一个数组会替换所有其他数组,因为我的数组 arrInfo 位于 for 循环之外,因此当它被一遍又一遍地引用相同的信息时最终被要求。但是,当我将此数组放入 for 循环时,它无法存储该数组的所有信息(因为它只是一遍又一遍地重新制作而没有存储多个字符串)。任何帮助告诉我如何添加数组以便它每次都是唯一的将不胜感激。
解决方案(感谢 Tusar):
String[] arrInfo = {eventName, eventLocation, eventTime, identifier};
for(int i = 0; i < numLines; i++)
{
line = br.readLine();
arrInfo[i%4] = line.toString();
if((i+1)%4 == 0)
{
HashMap<String, String[]> maps = new HashMap<String, String[]>();
String name = arrInfo[3];
maps.put(name, arrInfo);
events.add(maps.get(name));
arrInfo = new String[4];
}
}
基本上,对于任何感兴趣的人,只需重新初始化底部的数组即可。
【问题讨论】:
-
你为什么不试试
Map<String, List<String>>?