我正在从一个文件中读取大量的整数,最后我想从这些整数中获得一些基本的统计数据(中位数,平均数,25个百分点,75个百分点等).我可以随时计算一些这些统计数字,但在我看来,计算第25/75百分位数会很复杂.我认为,最简单的方法是将整数放在一个列表中,并从该列表中进行统计.但是,由于列表太大,可能会减慢程序使用这么多内存的速度.你们有什么建议吗?这就是我获取数据的方式以及我想到的两个选项:
Scanner input = new Scanner(new File("name"));
ArrayList<Integer> lits= new ArrayList<Integer>();
while(input.hasNextLine()){
list.add(Integer.parseInt(input.nextLine()));
}
doStatistics(list);
Run Code Online (Sandbox Code Playgroud)
要么
Scanner input = new Scanner(new File("name"));
while(input.hasNextLine()){
//I dont know how I would acomplish this for the percentile stats
acqquireStats(Integer.parseInt(input.nextLine()));
}
Run Code Online (Sandbox Code Playgroud)
鉴于值的数量明显小于样本的数量,因此存储每个值的数量比相反存储更有意义。
Long[] samples = new Long[101];
while(input.hasNextLine()){
try{
samples[Math.max(0, Math.min(100, Integer.parseInt(input.nextLine())))];
} catch (ParseException e){/*not a number*/}
}
Run Code Online (Sandbox Code Playgroud)
这给您留下了仅由一个微小数组表示的大量数据。
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |