如何toString()像这样的列表:列表<选项>?

4 java arraylist tostring java-8

假设我有一个list名为的对象Option:

List<Option> opts = ArrayList<Option>();
Run Code Online (Sandbox Code Playgroud)

我有toString()对象的覆盖Option.

当我这样做opts.toString()意味着我做一个List的字符串,我得到一些不必要的逗号,,,,,.

我想改变这一点.请问,有没有一种方法可以更好地将List内部循环到toString每个元素?希望我很清楚.

Hol*_*ger 5

如果你想将字符串表示粘在一起,你可以使用

opts.stream().map(Object::toString).collect(Collectors.joining()));
Run Code Online (Sandbox Code Playgroud)

但是如果你只想摆脱逗号,即保留一个空格作为分隔符,你可以自定义它

opts.stream().map(Object::toString).collect(Collectors.joining(" ")));
Run Code Online (Sandbox Code Playgroud)

或者,如果你担心过时的分隔符,即你不想在空字符串之间使用分隔符,请使用

opts.stream().map(Object::toString)
    .filter(s->!s.isEmpty()).collect(Collectors.joining(" "))
Run Code Online (Sandbox Code Playgroud)

如果您错过括号,请使用其中一个

opts.stream().map(Object::toString).collect(Collectors.joining(" ", "[", "]"))
Run Code Online (Sandbox Code Playgroud)

要么

opts.stream().map(Object::toString)
    .filter(s->!s.isEmpty()).collect(Collectors.joining(" ", "[", "]"))
Run Code Online (Sandbox Code Playgroud)