java - 等效的 lambda 表达式,获取列表中每个对象的属性

标签 java list lambda java-8

在 Java 中这个 for 循环的等效 lambda 表达式是什么?
我只想在一行中打印列表对象的名称。

for(Attribute attr : dataSet.getAttributeList()){
            System.out.print(attr.getName() + " ");
        }

我尝试了以下但没有任何运气,我只得到了流的身份哈希码。 Arrays.asList(dataSet.getAttributeList().stream().map(p -> p.getName()));

最佳答案

假设您的名称属性是一个 String,继续使用您的 Stream 管道。使用内置的 Collector 收集名称,它将值与每个元素之间的分隔符连接起来:Collectors.joining :

Returns a Collector that concatenates the input elements, separated by the specified delimiter, in encounter order.

你可以删除不必要的Arrays.asList,反正这是不正确的;它采用数组而不是流或字符串作为参数。

System.out.println(
    dataSet.getAttributeList().stream()
        .map(p -> p.getName())
        .collect(Collectors.joining(" "))
);

您也可以选择使用方法引用而不是 lambda 表达式:

.map(Attribute::getName)

关于java - 等效的 lambda 表达式,获取列表中每个对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975499/

相关文章:

python - 从 python 列表中获取字典

带有 2 个列表/变量的 Python "for loop"

python - 将 3D 列表转换为 3D NumPy 数组

c# - 什么时候评估闭包中的属性?

lambda - 尝试在业务域和数据域之间转换表达式树是否可行?

java - Autowiring 的 bean 在 setter 之外为空

java - Ant 无法导入 R.java

java - 在 gridview 中缩放 imageview 时的空白

c# - 如果不使用 lambda 表达式,这个 Parallel.ForEach 循环将如何完成?

java.lang.OutOfMemory错误: GC overhead limit exceeded after the service gets executed for a week