java之IO流运用—文件内容提取至ArrayList
有以下交易明细:
客户号 姓名 所述机构号 性别 帐号 发生时间 发生金额
000001|刘德华|0000|1|4155990188888888|2006/07/20 20:00:05|300.00
000201|郭富城|0002|1|4155990199999999|2006/07/20 20:00:05|500.00
000101|黄晓明|0012|1|4155990100000000|2006/07/20 20:00:05|1000.50
000101|张东健|0012|1|4155990155555555|2006/07/20 20:00:05|600.99
000301|迪丽热巴|0013|0|4155990111111111|2006/07/22 20:10:05|5000.00
004002|张学友|0000|1|4155990188888888|2006/07/25 20:00:05|200.00
一行是一条交易明细,每行分6列,列间用|分隔。#为注释符号。类TransRecord存储一条明细(金额字段数据类型定为BigDecimal)。解析文件数据至List<TransRecord>。
这个实例中的信息全部在“record.txt”文件中存储,需要将文本数据解析为6个交易记录对象并存入ArrayList中,首先需要使用FileInputStream获取文件输入流,然后将每行文本数据解析为一个交易记录对象,将每个对象添加到数组中,接下来便可对数组进行操作,按照客户号查询记录,按照日期段查询记录,计算总交易金额,按照交易金额排序
分析
要实现上述功能,需创建三个类:
- TransRecord类:交易记录类,定义交易记录的属性,并重写hashCode和equals,重写toString方法
- TransRecordManager类:交易记录管理类,声明所有方法并实现
- TestTransRecord类:测试类,程序主入口
代码如下:
TransRecord类
import java.math.BigDecimal;
import java.util.Date;
/**
* 交易记录类
* @author max
*
*/
public class TransRecord {
/**客户号*/
private String num;
/**姓名*/
private String name;
/**机构号*/
private String jnum;
/**性别*/
private String sex;
/**账号*/
private String account;
/**发生时间*/
private Date time;
/**发生金额*/
private BigDecimal cash;
public TransRecord() {
// TODO Auto-generated constructor stub
}
public TransRecord(String num, String name, String jnum, String sex, String account, Date time, BigDecimal cash) {
super();
this.num = num;
this.name = name;
this.jnum = jnum;
this.sex = sex;
this.account = account;
this.time = time;
this.cash = cash;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJnum() {
return jnum;
}
public void setJnum(String jnum) {
th