java 如何将对象列表以表格格式打印到文件中

iswrvxsc  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(130)

我必须将对象列表打印到一个表格格式的文本文件中。例如,如果我有一个Person(有getName、getAge和getAddress方法)对象列表,文本文件应该如下所示。

Name       Age      Address

Abc        20       some address1
Def        30       some address2

我可以通过手动编写一些代码来做到这一点,在这些代码中我必须处理空格和格式问题。
我只是好奇它们是API还是工具来完成这种格式化工作?

6fe3ivhb

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
blmhpbnm

blmhpbnm2#

使用带填充字段的printf实现列对齐。
具体为PrintWriter.printf

nnt7mjpx

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 |

相关问题