基本思路就是:
首先读取数据,因为一行只有一个数据,所以在读取的过程中可以完成两个步骤,1,数据量的计算,每读取一行,count++ ,同时把数据存储到一个链表中,
然后把链表转换为数组,利用Arrays的静态方法sort()完成数组的排序
最后根据排序好的数组计算哪个数出现的最多
最后输出
类numSum可以简单的看作一个结构
主要是存储一个整数和该整数出现的次数
完全可以用两个变量代替
import java.io.File;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Arrays;
public class TestSum {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ArrayList<Integer> dataSet = new ArrayList<Integer>(500) ;
File f = new File("存储数据集的文件") ;
RandomAccessFile ras = new RandomAccessFile(f, "r");
String str = ras.readLine();
int count = 0; // count用来存储数据量
while (str != null) {
dataSet.add(Integer.parseInt(str)) ;
count++ ; //读取一个数,count++
str = ras.readLine();
}
ras.close();
//读取数据结束
Integer[] a = new Integer[dataSet.size()] ;
a = (Integer[])dataSet.toArray() ;//变成数组存放
Arrays.sort(a);
numSum aa = new numSum(Integer.MIN_VALUE) ;//存储最大的
numSum bb = new numSum(Integer.MAX_VALUE) ;//临时的
for (int i = 0; i < a.length; i++) {
if(a.length - 1 == i)
break ;
if(a[i] == a[i + 1]){
bb.value = a[i] ;
bb.sum = 1 ;
while(a[i] == a[i + 1]){
//bb.value = a[i] ;
bb.sum ++ ;
i++ ;
if(a.length - 1 == i)
break ;
}//while
//i -- ;
}//if
if(bb.sum > aa.sum){
aa.sum = bb.sum ;
aa.value = bb.value ;
}//if
}//for
System.out.println("数据量为:" + count);
System.out.println("最大数为:" + aa.value + " 数的个数为: " + aa.sum);
}//main
}//testSum
class numSum{
int value ;
int sum = 0 ;
public numSum(int value ){
this.value = value ;
this.sum = 0 ;
}
}