我必须将对象列表打印到一个表格格式的文本文件中。例如,如果我有一个Person(有getName、getAge和getAddress方法)对象列表,文本文件应该如下所示。
Name Age Address Abc 20 some address1 Def 30 some address2
我可以通过手动编写一些代码来做到这一点,在这些代码中我必须处理空格和格式问题。我只是好奇它们是API还是工具来完成这种格式化工作?
6fe3ivhb1#
import java.util.*; public class Test { public static void main(String[] args) { List<Person> list = new ArrayList<Person>(); list.add(new Person("alpha", "astreet", 12)); list.add(new Person("bravo", "bstreet", 23)); list.add(new Person("charlie", "cstreet", 34)); list.add(new Person("delta", "dstreet", 45)); System.out.println(String.format("%-10s%-10s%-10s", "Name", "Age", "Adress")); for (Person p : list) System.out.println(String.format("%-10s%-10s%-10d", p.name, p.addr, p.age)); } } class Person { String name; String addr; int age; public Person(String name, String addr, int age) { this.name = name; this.addr = addr; this.age = age; } }
输出:
Name Age Adress alpha astreet 12 bravo bstreet 23 charlie cstreet 34 delta dstreet 45
blmhpbnm2#
使用带填充字段的printf实现列对齐。具体为PrintWriter.printf
nnt7mjpx3#
使用反射将Java对象打印为Markdown表的库:https://github.com/mjfryc/mjaron-etudes-java
dependencies { implementation 'io.github.mjfryc:mjaron-etudes-java:0.1.12' }
import pl.mjaron.etudes; class Cat { // ... any public fields or public getters here (JBean-like style). } class Sample { void sample() { List<Cat> cats = Arrays.asList(cat0, cat1); String table = Table.render(cats, Cat.class); System.out.println(table); } }
样本输出:
| name | legsCount | lazy | topSpeed | | ---- | --------- | ----- | -------- | | John | 4 | true | 35.24 | | Bob | 5 | false | 75.0 |
3条答案
按热度按时间6fe3ivhb1#
输出:
blmhpbnm2#
使用带填充字段的printf实现列对齐。
具体为PrintWriter.printf
nnt7mjpx3#
使用反射将Java对象打印为Markdown表的库:https://github.com/mjfryc/mjaron-etudes-java
样本输出: