前言

有时想输出整齐的二维数据,可是输出后因为数据的宽度导致输出并不好看,有的数据更是对不齐,歪歪扭扭;所以写了一个输出类Fout,意为格式化输出。

项目地址

github

代码与输出截图

代码调用:

java打印退格 java打印格式_java打印退格


列项:

java打印退格 java打印格式_java打印退格_02

输出样式:

java打印退格 java打印格式_数据_03

正文

一、调用方式

Fout的构造函数

java打印退格 java打印格式_插入数据_04

可以构造一个含有多级子列项的表。(无奈, 真是很费脑)

1.如果你的列项是固定的(即有固定的列Column),那么可以通过Class对象获取注解的方式来生成一个表;提供两种注解FormatOpFormatOPSubColumn。如果你使用这种方法,则需自定义类来使用注解,该类必须继承FoutColumn类。

FormatOP可以设置该列的列名、方向(居左,居中,居右)、前景色、背景色,如Testcase类中State属性。
FormpatOpSubColumn可以指定该列的子列项,正如Testcase类中Action和Goto属性一样,需要传入子列项的Class对象。

2.如果你的列项不是固定的(即不知道会有多少列),那么可以通过构造函数Fout(ColumnAttr...)来创建列项和子列项。

在ColumnAttr中有快速创建一组列的方法qCreate(String…), 只需要传入列名即可。

3.如果你的列项不是固定的(即不知道会有多少列),也不想有类名,那么可以通过构造函数Fout(int)快速创建。

二、方法列表

  1. insert() 逐个插入数据。
  2. insertln() 逐行插入数据。
  3. skipPlace() 跳过一个位置(即一个单元格)。
  4. insertSubColumn() 指定一个子列范围,逐个插入数据。
  5. insertlnSubColumn() 指定一个子列范围,逐行插入数据。
  6. setTableName() 设置表格名称。
  7. findValue() 找到某个值, 在输出时,前景色是红色。
  8. changeColumnColor() 改变某一列的前景色和背景色, 如果为0, 则不修改。


后文

缺点

  1. 表的形式是以List<Object[]>方式存放,所以比较消耗空间。
  2. 有的方法比较死板,比如findValue()函数,只能一个个匹配,效率低。
  3. 输出的过程中可能会有点卡顿,输出方式是一个一个输出,很慢。
  4. 不能输出到文件中。

测试

小测试验

插入数据(行)并输出

时间

100

110ms

1000

500ms

10000

3000ms

50000

16000ms

插入数据(行)查找(1000次)并输出

时间

100

300ms

1000

1200ms

10000

7500ms

50000

45000ms