当前位置: 首页 > 知识库问答 >
问题:

你能在不映射到字符串的情况下收集(joining())吗?

唐骏祥
2023-03-14
    public static void main(String... args) {
        List<Person> people =
        Arrays.asList(
                new Person(23, "Paul"),
                new Person(23, "John"),
                new Person(23, "Greg"),
                new Person(24, "Greg"),
                new Person(25, "Paul")
        ); // Person overrides toString

        String peopleString = people
                .stream()
                .collect(Collectors.joining());

        System.out.println(peopleString);

    }
String peopleString = people
                .stream()
                .map(Person::toString)
                .collect(Collectors.joining());

还要注意,如果一个类有一个返回字符串的toString方法,您将获得相同的结果,而不需要用一个提取名称的函数映射到原始流上。

什么时候每个对象都应该从object继承ToString

共有1个答案

邢凯歌
2023-03-14

无论书上说什么都是错的,而你的解释是对的(除非观点完全不同,而你没有明白)

people.stream()

将生成,而collectors.joining的定义如下:

public static Collector<CharSequence, ?, String> joining()

显然,这不能起作用,因为Person不是CharSequence的实例。

 类似资料:
  • 问题内容: 我正在阅读Java 8的使用,作者说如果您有一个覆盖toString方法的类,则在执行collect(joining())时不需要将流映射到String。一个例子: 但是,这不起作用,仅此: 可行,所以这本书是错误的呢?此外,他为什么这么说(我的措词有所改变): 还要注意,如果类具有返回字符串的toString方法,则无需使用提取名称的函数在原始流上进行映射即可获得相同的结果。 当每个

  • 我是Mapstruct的新手。我有一个Word对象,它包含一个字符串值和一组它自己,我想把它映射到WordDTO,它包含一个值和一组字符串值。我不知道怎么做。正如我在注释中所说,mapstruct不能映射两个对象是有道理的,但如果它有帮助,我将错误放在下面: 我为映射实现了这个接口: 谢谢你的帮助。

  • 我用了这段代码并运行,但没有输出出来不知道为什么? 但如果正在使用s=“”;则也没有输出。 但是当我使用s=“”;那么输出就来了,为什么会这样呢?

  • 为什么它抛出一个错误?任何帮助都将不胜感激 编辑:

  • 问题内容: 我在何时遇到oracle的问题。 该查询始终返回null,尽管很明显结果应该是第一种情况。我是否缺少有关oracle中字符串比较的内容? 问题答案: 您要再次检查字符串和一个空字符串,从而出现问题;在Oracle中,您最好检查一下您的字符串: 关于Oracle处理空字符串和空值的方式,在这里您可以找到更多信息 一个例子: 给出: 简而言之,谈论时,您可以依靠的唯一支票是:

  • 问题内容: 当我用Java进行操作时,我在stdout中得到了很好的输出。在不干预标准输出的情况下,如何在变量中获得相同的a字符串表示形式?像什么? 问题答案: 使用。 所有的亦是在此之后是做头套下。地图的格式在中描述。 返回此映射的字符串表示形式。字符串表示形式由键值映射列表组成,这些键值映射由地图视图的迭代器返回,并用大括号(“ {}”)括起来。相邻的映射用字符“,”(逗号和空格)分隔。每个键