Java格式化输出(表格样式)
前言
有时想输出整齐的二维数据,可是输出后因为数据的宽度导致输出并不好看,有的数据更是对不齐,歪歪扭扭;所以写了一个输出类Fout,意为格式化输出。
项目地址
代码与输出截图
代码调用:
列项:
输出样式:
正文
一、调用方式
Fout的构造函数
可以构造一个含有多级子列项的表。(无奈, 真是很费脑)
1.如果你的列项是固定的(即有固定的列Column),那么可以通过Class对象获取注解的方式来生成一个表;提供两种注解FormatOp与FormatOPSubColumn。如果你使用这种方法,则需自定义类来使用注解,该类必须继承FoutColumn类。
FormatOP可以设置该列的列名、方向(居左,居中,居右)、前景色、背景色,如Testcase类中State属性。
FormpatOpSubColumn可以指定该列的子列项,正如Testcase类中Action和Goto属性一样,需要传入子列项的Class对象。
2.如果你的列项不是固定的(即不知道会有多少列),那么可以通过构造函数Fout(ColumnAttr...)
来创建列项和子列项。
在ColumnAttr中有快速创建一组列的方法qCreate(String…), 只需要传入列名即可。
3.如果你的列项不是固定的(即不知道会有多少列),也不想有类名,那么可以通过构造函数Fout(int)
快速创建。
二、方法列表
- insert() 逐个插入数据。
- insertln() 逐行插入数据。
- skipPlace() 跳过一个位置(即一个单元格)。
- insertSubColumn() 指定一个子列范围,逐个插入数据。
- insertlnSubColumn() 指定一个子列范围,逐行插入数据。
- setTableName() 设置表格名称。
- findValue() 找到某个值, 在输出时,前景色是红色。
- changeColumnColor() 改变某一列的前景色和背景色, 如果为0, 则不修改。
后文
缺点
- 表的形式是以List<Object[]>方式存放,所以比较消耗空间。
- 有的方法比较死板,比如findValue()函数,只能一个个匹配,效率低。
- 输出的过程中可能会有点卡顿,输出方式是一个一个输出,很慢。
- 不能输出到文件中。
测试
小测试验
插入数据(行)并输出 | 时间 |
---|---|
100 | 110ms |
1000 | 500ms |
10000 | 3000ms |
50000 | 16000ms |
插入数据(行)查找(1000次)并输出 | 时间 |
---|---|
100 | 300ms |
1000 | 1200ms |
10000 | 7500ms |
50000 | 45000ms |