文件中的ArrayList(特定格式)

时间:2012-05-31 02:27:01

标签: java file input arraylist

我有一个看起来像这样的文件:

    1st ­ ­ ­   ­­­ 2nd ­ ­ ­   ­­­ nth
    e1­ ­ ­ ­   ­­­ ­­v1 ­ ­ ­   ­­­ 1
    e1 ­ ­ ­   ­­­ v3 ­ ­ ­   ­­­ 2
    e1 ­ ­ ­   ­­­ v4 ­ ­ ­   ­­­ 4
    e1 ­ ­ ­   ­­­ v5 ­ ­ ­   ­­­ 7
    e2 ­ ­ ­   ­­­ v1 ­ ­ ­   ­­­ 1
    . ­ ­ ­   ­ ­ ­. ­ ­ ­  ­ ­ ­­­ .
    . ­ ­ ­   ­ ­ ­. ­ ­ ­   ­­­  .
    . ­ ­ ­   ­ ­ ­.      ­  .

我希望第一列是arraylist的名称(e1,或e2,或e3),我希望第二列在第n个索引中包含它的值(一个int)。

我该怎么做呢?

如果您想进一步澄清我的意思,请不要害怕离开下午。

P.S。这是一个更大项目的一部分,但我有点坚持数据格式。

我假设我必须寻找名称(第一列)的arraylist,如果我找到它,那么在第n个值(第3列)添加值(第2列)如果我找不到它,我会创建一个arrayList,然后执行上述操作。

更新

所以我设法使程序几乎正常工作 - 我无法使用ArrayLists的原始结构,因为所有变量都必须在编译期间声明 - 不能在之后声明。 我决定使用一个hashmap,键具有第一个值,第二个值的arraylist在第n个位置:

`HashMap<String, ArrayList<Integer>> userRatings = new HashMap<String, ArrayList<Integer>>();
 if(!userRatings.containsKey(user)) //The user does not have ratings.
                {
                    ArrayList<Integer> ratings = new ArrayList<Integer>();
                    //                     ratings = userRatings.get(user);
                   for (int j = 0; j < 50; j++)
                    {
                        ratings.add(j);
                    }
                    userRatings.get(user).add(location,value);
}                }
                else //The user has ratings
                {
                    userRatings.get(user).add(location,value);**
                }
                System.out.println(user + " " + userRatings.get(user));
            }
            bufferReader.close();
        }    catch (FileNotFoundException e)
        {
            System.out.println("File does not exist or could not be found.");
        }
        catch (IOException e)
        {
            System.out.println("Can't read from file");
        }
        catch (NullPointerException e)
        {
        }`

我现在遇到的问题是添加到arraylist。我怎么能在粗体区域做到这一点? - 我如何填充和操纵arraylist?

1 个答案:

答案 0 :(得分:1)

  

老实说,我认为最初的问题是在阅读文件中   格式。

如果使用正确的库,这很容易。看一下这个:http://opencsv.sourceforge.net/,用于解析csv文件。从该网站:

  

我可以使用自己的分隔符并引用字符吗?

     

是。有   适合提供自己的分隔符和报价的构造函数   字符。假设您正在为分隔符使用选项卡,则可以执行此操作   像这样的东西:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t');

我认为这正是你想要做的。您要求此库使用制表符分隔的值而不是逗号分隔来解析输入文件。从上面的示例中,这似乎是您的输入格式。