话不多说,先看题
随机生成 Salary {name, baseSalary, bonus }
的记录,如“wxxx,10,1”,每行一条记录,总共1000万记录,写入文本文件(UFT-8编码), 然后读取文件,name的前两个字符相同的,其年薪累加,比如wx,100万,3个人,最后做排序和分组,输出年薪总额最高的10组:
wx | 200万 | 10人 |
lt | 180万 | 8人 |
… | … | … |
name
4位a-z随机,baseSalary [0,100]
随机 bonus[0-5]
随机 ,年薪总额 = baseSalary*13 + bonus。
思路:
第一步:先编写一个Salary对象
里面包含有name
,baseSalary
, bounus
属性,然后编写一个构造器,重写toString()
方法方便序列化数据,同时编写构建Salary对象的方法build();
/**
* name 4位a-z随机
* baseSalary 0-100随机
* bonus 0-5随机
* 年薪总额 = baseSalary * 13 + bonus
*/
class Salary {
// name 4位a-z随机,baseSalary 0-100随机,bonus 0-5随机 年薪总额 = baseSalary * 13 + bonus
private String name;
private int baseSalary;
private int bonus;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBaseSalary() {
return baseSalary;
}
public void setBaseSalary(int baseSalary) {
this.baseSalary = baseSalary;
}
public int getBonus() {
return bonus;
}
public void setBonus(int bonus) {
this.bonus = bonus;
}
public Salary() {
}
public Salary(String name, int baseSalary, int bonus) {
this.name = name;
this.baseSalary = baseSalary;
this.bonus = bonus;
}
public Salary build() {
this.name = getRandomName(4);
// 0-100随机数
this.baseSalary = (int)(100 * Math.random());
// 0-5随机数
this.bonus = (int)(5 * Math.random());
return this;
}
@Override
public String toString() {
return name + " " + baseSalary + " " + bonus;
}
/**
* 生产Name随机函数 4位a-z随机
* @param length
* @return
*/
private static String getRandomName(