java集合、IO的练习题

################################################
# java.util java.io 综合练习题
#
#
# 教学目标:
# (1)建立单元测试和独立解决问题的意识,掌握解决问题的一般方法
# (2)在一定压力下工作(时间限制)
# (3)IO操作后必须close文件:重点要养成的习惯
# (4)Map、List、Set、Iterator的运用,与array之间的转换技巧
# (5)Collections、Arrays中的集合类功能函数:排序、查找等

################################################


1. 采用两种方式实现输出如下格式的当前日期时间:
2006-07-25 09:00:05 355
方法:
public static String currentDateTime();
提示:
方式一: DateFormat
方式二: GregorianCalendar
思考:两种方式的异同
限时:学习30分,编码30分,测试20分

2. 用ArrayList或LinkedList实现先进先出队列Queue。自定义class Queue。
思考:两种List的异同。
限时:学习20分,编码30分,测试30

3. 类FileUtil提供了常见的文件操作函数,如读取文件内容到byte[]、将byte[]存到指定文件名等:
public class FileUtil{
public static byte[] loadFileData(String fileName) throws IOException;
public static void saveDataToFile(String fileName, byte[] data) throws IOException;
}
saveDataToFile的参数fileName可以带路径,如果不存在该路径,需建立文件夹后再存文件。
限时:学习20分,编码30分,测试20

4. 字符串练习题(6)中的数据存在文件data.txt中,模板存在文件template.tmpl中,编写函数:
public static String composeMessage(String dataFileName, String templateFileName)
实现将数据文件和模板文件的内容组织成完整消息。
在此基础上实现一个命令行工具,可将数据和模板文件组成的消息存到指定文件中。要求能准确报告出错误原因。命令语法:
java cm -m dataFileName -v templateFileName -o outputFileName
限时:学习20分,编码30分,测试30

5. 配置文件service.txt的内容如下:
------------------------------------------------------------

#服务名 目的地址 端口号 服务类名 系统名称
HOST localhost 9870 TransferService 后台主机
HIPAY localhost 9870 BJElecToHipayService 应用服务器

------------------------------------------------------------
一行是一个service的配置,每行5列,列间以空格或tab字符分隔。
#为注释符号,即首字符是#的行为注释
类ServiceInfo如下:
public class ServiceInfo{
private String serviceName;
private String address;
private int port;
private String serviceClassName;
private String description;

//get/set method
}
一个ServiceInfo对象存储一行服务配置信息。
类ServiceInfoManager的接口如下:
public Interface ServiceInfoManager{
public ServiceInfo getServiceInfo(String serviceName);
}
请编写类实现ServiceInfoManager接口

,该类能自动读取service.txt配置文件生成ServiceInfo对象,并对外提供最快的按serviceName检索ServiceInfo的功能。
限时:学习40分,编码60分,测试30

6. 交易明细文件内容如下例:
---------------------------------------------------------------------------
#客户号 姓名 所述机构号 性别 帐号 发生时间 发生额
000001|刘德华|0000|1|415599**********|20060720200005|300.00
000201|晓龙|0002|1|415599**********|20060720200005|500.00
000101|黄晓明|0012|1|415599**********|20060720200005|1000.50
000101|张东健|0012|1|415599**********|20060720200005|600.99
000301|梁朝伟|0013|0|415599**********|20060722201005|5000.00
000001|刘德华|0000|1|415599**********|20060725200005|200.00

---------------------------------------------------------------------------
一行是一条交易明细,每行分6列,列间用|分隔。#为注释符号。
类TransRecord存储一条明细(金额字段数据类型定为BigDecimal)。
解析文件数据至TransRecord[]。
实现如下功能:
public class TransRecordManager{
/**
* 记录数组
*/
private TransRecord[] records;

/**
* 加载数据
* @param in - 数据流
* @return
* @throws - 解析过程中IO错误
*/
public void load(InputStream in) throws IOException;

/**
* 加载数据
* @param fileName - 包含记录数据的文件名
* @return
* @throws - 解析过程中IO错误
*/
public void load(String fileName) throws IOException;

/**
* 取所有记录
* @return 所有记录数组或null
*/
public TransRecord[] getAll();

/**
* 按客户号查询记录
* @param customerNumber - 客户号
* @return 符合条件的记录数组或null
*/
public TransRecord[] findByCustomerNumber(String customerNumber);

/**
* 按日期段查询记录
* @param start - 开始日期
* @param end - 结束日期
* @return 符合条件的记录数组或null
*/
public TransRecord[] findByDate(String start, String end);

/**
* 取得总金额
* @return 总金额
*/
public BigDecimal totalAmount();

/**
* 按金额排序
* @return 按金额升序排序的结果
*/
public TransRecord[] sortByAmount();

/**
* 打印
* @param out - 输出流
*/
public void print(OutputStream out);

}
将类中的TransRecord[]全部换成List再实现一次。
提示:排序、查询采用java.util.Arrays和java.util.Collections中的方法
限时:学习60分,编码60分,测试30

相关文档
最新文档