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

使用stream调用类方法并在列表中收集结果[重复]

楚皓君
2023-03-14

假设我有一个类ClassA,这个类有一个toString方法。如果我有一个ClassA列表,我如何使用一个流创建一个新的字符串列表,在这个流中我遍历ClassA列表中的每个对象,并在一行中调用toString呢?大概是这样的:

public static void main(String[] args) throws Exception
{
    List<classA> myList = new ArrayList<>();
    myList.add(new classA("ONE"));
    myList.add(new classA("TWO"));
    myList.add(new classA("THREE"));
    
    List<String> stringList = ....
}

static class classA {
    String text;
    classA(String text) {
        this.text = text;
    }

    @Override
    public String toString(){
        return text;
    }
}

共有1个答案

田晨
2023-03-14

首先映射到字符串,然后收集到列表

List<String> stringList = myList.stream()
                                 .map(ClassA::toString)
                                 .collect(Collectors.toList());

别忘了重命名类,以大写开头:)

 类似资料:
  • 我有以下问题: 我有一个如下的方法,一次只能收集500个名字: 我有一个1000个名字的列表,因此我想使用番石榴将这个列表划分为最大大小为500的子列表 并将其传递给请求以获取结果DTO列表。如何在 Java8 中执行此操作?

  • 我必须遍历一个列表,并为每个对象调用一个方法,但要并行。在循环之后,还有其他语句,它们必须等待并行方法调用。我如何在Java中做到这一点?

  • 我必须运行多个外部调用操作,然后以列表的形式获得结果。我决定使用api,而我准备的代码相当恶心: 示例: 我有以下几个问题: > 我可以避免在流中重复块吗?在流中我将CompletableFuture映射到User? 此代码是否可以不那么连续(如何避免等待所有的未来完成?) 这样做可以吗(所有的未来都将在流中解决吗?):

  • 我正在对实现接口的类的对象进行流式处理。我希望将它们收集为接口的元素列表,而不是实现类。 对于Java16.0.1的方法,这似乎是不可能的。例如,在下面的代码中,最后一条语句将无法编译。 我们可以显式地将每个元素从转换为。但至少为了简洁起见,我们可以使用。 为什么我不能在Java 16中使用Stream#ToList来收集类的接口列表? 如果有人有比明确选角更好的解决方案,我也很乐意听到:)

  • 我有以下代码,即从返回CompletableFuture的web API获取给定时间间隔的报告。如果超过了返回报告的行数,时间间隔将被分成两半,并为两半调用API。这将递归重复,直到行数满足条件。 我想得到完全未来 我的代码在不需要进行间隔拆分时运行正常。如果需要递归调用,它将只返回空列表,递归调用将在稍后异步执行。 我也尝试过使用类似的东西,但没用: 如果我知道自己做错了什么,我会心存感激。谢谢

  • 例如,我有一个类包含name和surname字段。 我想从的中收集一个的(名字和姓氏都在一起),但似乎无法对每个列表使用两次map或无法对每个列表使用两次stream。 我做错了什么?