非常に巨大なcsvファイルがあり、選択クエリを使用して平均を取得する必要があります...メモリ不足のため、通常は行ごとに読み取ることはできません。
次のコードは、短い csv ファイルではうまく機能しますが、巨大なファイルでは機能しません。このコードを編集して、大きな csv ファイルに使用できるようにしていただければ幸いです。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Mu {
public void Computemu()
{
String filename="testdata.csv";
File file=new File(filename);
try {
Scanner inputstream=new Scanner(file);//Scanner read only string
// String data=inputstream.next();//Ignore the first line(header)
double sum=0;
double numberOfRating=0;
while (inputstream.hasNext())
{
String data=inputstream.next();//get a whole line
String[] values= data.split(";");//values separate by;
double rating=Double.parseDouble(values[2].replaceAll("\"", ""));//change value to string
if(rating>0)//do not consider implicit ratings
{
sum+=rating;
numberOfRating++;
}
}
inputstream.close();
System.out.println("Mu is"+ (sum/numberOfRating));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}