java - 在单独的行上使用 toString() 方法返回 Java 中集合的元素

标签 java set tostring

我正在使用 toString()返回 Set<String> 元素的方法在 Java 中,但每个元素都在单独的一行中。

代码示例:

import java.util.Set;

public class Animals{
    Set<String> animals;
    String newanimal;

    public Anmimals (Set<String> animals){
        this.animals = animals;
        }

    public setAnimals(String newanimal){
        this.newanimal = newanimal;
        animals.add(newanimal);
    }

    public String toString(){
        /* this is where my problem is i want to return the set (below), 
           however i also need each animal to be on a new line */
        return animal
    }

}

我能找到的唯一有点用的东西,最后都建议不要使用 toString()而是将实际类与 System.out.println() 一起使用然而,要打印出信息,toString()是这个特定问题所必需的。

是否可以向该方法添加一个 for 循环并在我使用 \n 返回单独行的每个元素时遍历每个方法? ?欢迎所有建议,因为这个建议,即使可能,看起来真的很乱。

最佳答案

我会流式传输集合,将每个元素转换为字符串并使用行分隔符连接它们:

@Override
public String toString() {
    return animals.stream()
                  .map(Object::toString)
                  .collect(Collectors.joining(System.lineSeparator()));
}

编辑:
编辑问题后,很明显问题是关于加入 Set<String> 的。 ,而不是任何旧的Set .在这种情况下,解决方案可以大大简化:

@Override
public String toString() {
    return String.join(System.lineSeparator(), animals);
}

关于java - 在单独的行上使用 toString() 方法返回 Java 中集合的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45985723/

相关文章:

java - 如何在 Spring 中处理具有并发访问的事务

c# - ToString 的约定

java - 如何在 Java 中对同一类中的多个枚举成员使用 toString() 方法

java - 检查循环是否在没有条件中断的情况下运行

java - 什么更好,使用 mysql "select from table where..."或将整个表移动到 Arraylist 并遍历它?

java - Spring Boot : How to Disable JNDI lookup and use spring. 数据源代替测试?

c++ - 直接访问STL "set"的元素

Scala 不可变 Set 是可变的吗?

python - 在python中,如何使函数接受相同的小写和大写字母?

java - stringBuilder.reverse 如何工作?