-2

次のようなファイルがあります。

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

最初の列を配列リストの名前(e1、e2、またはe3)にし、2番目の列にn番目のインデックス内の値(int)を設定します。

どうすればいいですか?

私が何を意味するのかについてさらに説明が必要な場合は、午後を離れることを恐れないでください。

psこれはより大きなプロジェクトの一部ですが、私はデータの形式に固執しています。

名前(最初の列)の配列リストを探す必要があると想定しています。見つかった場合は、n番目の値(3番目の列)に値(2番目の列)を追加します。そうでない場合は、それを見つけて、arrayListを作成し、次に前述のことを行います。

アップデート

そのため、プログラムをほぼ機能させることができました。コンパイル中にすべての変数を宣言する必要があるため、ArrayListsの元の構造を使用できませんでしたが、後で宣言することはできません。キーに1番目の値があり、n番目の位置に2番目の値の配列リストがあるハッシュマップを使用することにしました。

`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)
        {
        }`

私が今抱えている問題は、配列リストに追加することです。太字の領域でそれをどのように行いますか?--配列リストにデータを入力して操作するにはどうすればよいですか?

4

1 に答える 1

1

正直なところ、最初の問題はその形式のファイルを読み取ることだと思います。

適切なライブラリを使用すれば、これは簡単です。これを見てください:http://opencsv.sourceforge.net/、これはcsvファイルを解析するためのものです。そのサイトから:

独自の区切り文字と引用符を使用できますか?

はい。独自の区切り文字と引用文字を提供するコンストラクターがあります。区切り文字にタブを使用しているとすると、次のようなことができます。

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

これはまさにあなたがやろうとしていることだと思います。このライブラリに、入力ファイルをコンマ区切りではなくタブ区切り値で解析するように要求しています。上記の例から、それが入力形式のようです。

于 2012-05-31T05:45:05.653 に答える