一个文本文件中约有10万多行的数据,每个数据占一行(数据为一个整数)。要求:统计出总行数,并找出出现次数最多的那个整数。

 基本思路就是:
首先读取数据,因为一行只有一个数据,所以在读取的过程中可以完成两个步骤,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 ;
}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值