-1

私は言っているファイルを読み込もうとしています

Name,Date,Place

Tom,1/1/2010,America
Dick,2/2/2011,China
Harry,3/3/2012,Germany

そして、列ヘッダーを文字列に追加し、値をArrayListに追加します。

HashMap<String columnName ,ArrayList<String> Value>

したがって、プログラムは次のように実行する必要があります。

if(lineNumber == 1)
{
   interate through values and create headers
}
else
   add values to corresponding header list

else私の問題は、コードの一部で配列リストを参照する方法がわからないことです。誰かが同じようなことをしたなら、私はあなたから聞きたいです!

編集

だから私は今のところこのようなものを持っています、

public void consumeLine(String path,int lineNumber,List line){

    if(lineNumber == 1)
    {
        ListIterator listIterator = line.listIterator();
        while(listIterator.hasNext())
        {   
            hashMap.put(listIterator.next().toString(),new ArrayList<String>());
        }
    }
4

2 に答える 2

1

列名の順序付きリストを作成し、各行の値を反復処理するときにそれを反復処理します。

このようなもの(テストされていないコード!):

ListIterator listIterator = line.listIterator();
if(lineNumber == 1)
{
    while(listIterator.hasNext())
    {   
        String key = listIterator.next().toString();
        keyList.add(key); // keyList is a List<String> instance field.
        hashMap.put(key, new ArrayList<String>());
    }
} else {
    Iterator<String> keyIterator = keyList.iterator();
    while(keyList.hasNext() && listIterator.hasNext())
    {
        String key = keyList.next();
        String value = listIterator.next();
        ArrayList<String> values = hashMap.get(key);
        values.add(value);
    }
}
于 2012-05-17T12:53:25.713 に答える
0

それを試してみてください:

  public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
        HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
        int lineNumber = 1;
        String[] columnName = null;
        ArrayList<String[]> value = new ArrayList<String[]>(); // temp array
        String line;
        String[] arr;
        while (reader.ready())
            if (!(line = reader.readLine()).isEmpty()) {
                arr = line.split("\\s+");
                if (lineNumber == 1)
                    columnName = arr;// create headers
                else
                    value.add(arr);// create values
                lineNumber++;
            }
        // transform data
        for (int i = 0; i < columnName.length; i++) {
            ArrayList<String> ar = new ArrayList<String>();
            for (int j = 0; j < value.size(); j++)
                ar.add(value.get(j)[i]);
            map.put(columnName[i], ar);
        }
        System.out.println(map);
    }
于 2012-05-17T13:02:46.627 に答える