次のような csv データセットがあります。
A, 10, USA
B,30, UK
C,4,IT
A,20,UK
B,10,USA
このcsv行を読んで、次の出力を提供したい:
A has ran 30 miles with average of 15.
B has ran 30 miles with average of 20.
C has ran 4 miles with average of 4.
Javaでこれを実現したい。Linq を使用して C# でこれを行いました。
var readlines = File.ReadAllLines(filename);
var query = from lines in readlines
let data = lines.Split(',')
select new
{
Name = data[0],
Miles = data[1],
};
var values = query.GroupBy(x => new {x.Name}).Select(group => new { Person = group.Key, Events = group.Sum(g =>Convert.ToDouble(g.Miles)) ,Count = group.Count() });
Java でこれを実行しようとしていますが、サードパーティのライブラリを使用せずにこれを実行できるかどうかわかりません。何か案は?これまでのところ、私のコードは Java で次のようになります。
CSVReader reader = new CSVReader(new FileReader(filename));
java.util.List<String[]> content = reader.readAll();
String[] row = null;
for(Object object:content)
{
row = (String[]) object;
String Name = row[0];
String Miles = row[1];
System.out.printf("%s has ran %s miles %n",Name,Miles);
}
reader.close();
}
各名前の合計マイレージ値を取得して平均を計算する良い方法を探しています。