首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在控制台上打印streamex

如何在控制台上打印streamex
EN

Stack Overflow用户
提问于 2022-11-12 09:38:19
回答 1查看 19关注 0票数 0

我试图在控制台上打印所有的streamex元素,但是我总是遇到这个问题。

one.util.streamex.StreamEx@2e817b38

所以我从主程序中调用“转换”方法,但是我没有工作。你知不知道,我该怎么做?

我希望我的问题能得到有帮助的答案。

EN

回答 1

Stack Overflow用户

发布于 2022-11-12 10:41:33

请张贴你的代码,这是很难读截图。从您的输出来看,您似乎正在从转换方法中打印StreamEx对象。这将不会输出您所需的内容。

当您打印一个java对象时,它会调用所有对象继承的toString()方法。默认情况下,toString()方法将返回一个字符串,该字符串列出类的名称,后面跟着一个@符号,然后是实例化对象分配给的内存位置的十六进制表示形式。

所以你才能得到这样的输出,

one.util.streamex.StreamEx@2e817b38

首先,您需要迭代StreamEx流,然后打印对象。注意,在Racer类中,toString方法被重写。因此,当我们对racer对象调用print时,它将调用我们编写的toString()方法。

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;
import one.util.streamex.StreamEx;

class PopupMenuExample {
    
    public static void main(String args[]) {

        StreamEx<Racer> racerStream = convert();
        System.out.println("this is wrong: " + racerStream);

        System.out.println("this is correct: ");
        racerStream.forEach(
                racer -> {
                    System.out.println(racer);
                }
        );
    }

    private static StreamEx<Racer> convert() {
        Racer r1 = new Racer("one", 40);
        Racer r2 = new Racer("two", 100);
        List<Racer> racers = new ArrayList<>();
        racers.add(r1);
        racers.add(r2);
        return StreamEx.of(racers);
    }
}

class Racer {
    String name;
    Integer speed;

    public Racer(String name, Integer speed) {
        this.name = name;
        this.speed =speed;
    }

    @Override
    public String toString() {
        return String.format("{ name:%s, speed: %d }", name, speed);
    }
}

输出:

这是错误的: one.util.streamex.StreamEx@7229724f

这是正确的:{名称:1,速度: 40 }{名称:2,速度: 100 }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74411834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档