【问题标题】:How to add arrays to an arrayList without replacing other arrays in the list如何将数组添加到arrayList而不替换列表中的其他数组
【发布时间】: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&lt;String, List&lt;String&gt;&gt;

标签: java arrays arraylist


【解决方案1】:
  String[] arrInfo =new String[4];
    for(int i = 0; i < 16; i++)
    {
      line = br.readLine();
      arrInfo[i%4] = line.toString();
      if((i+1)%4 == 0)
      {
        events.add(arrInfo);
        arrInfo =new String[4]; // re-initialize the array
      }
    }

【讨论】:

    猜你喜欢
    • 2014-11-05
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多