让我们假设有一个福克斯类,它有名字、颜色和年龄。假设我有一份狐狸的名单,我想打印出那些狐狸的名字,它们的颜色是绿色的。我想使用流来这样做。
字段:
我写了以下代码来做过滤和Sysout:
foxes.stream().filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out::println (fox.getName()));
但是,我的代码中存在一些语法问题。
到底是什么问题?我该怎么整理?
您可以尝试:
foxes.stream().filter(this::isColorGreen).map(Fox::getName).forEach(System.out::println);
public boolean isColorGreen(Fox fox) {
return fox.getColor().equals("green");
}
只需使用:
foxes.stream().filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out.println(fox.getName()));
原因是您不能同时使用方法引用和lambda表达式。
不能将方法引用与lambda组合,只需使用一个:
foxes.stream()
.filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out.println(fox.getName()));
或其他:
foxes.stream()
.filter(fox -> fox.getColor().equals("green"))
.map(Fox::getName) // required in order to use method reference in the following terminal operation
.forEach(System.out::println);
如何防止用户在“JTextField”中输入某些字符,如果输入该字符,则不要在文本字段中显示它
使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D
我有一个名为的对象,它描述了一个项目的买卖行为。与其他一些属性相比,它主要如下所示: 具有各自的吸气器和设置器。是该项目应出售/购买的金额,ItemData描述该项目的规格。PriceType是一个枚举,它是或。 我现在有一个方法,是哪个工作,在一个列表中找到最匹配的价格。我的所有价格都存储在一个简单称为的列表中。到目前为止,我的方法只是遍历列表,并返回与和匹配的第一个: 然而,这完全忽视了一个事
问题内容: 我有一个由对象填充的ArrayList。 我的对象类称为有两个字段; 我想使用该字段过滤列表,为了进行测试,我使用了字符串“ test”。 我用了来自谷歌的番石榴,它可以过滤ArrayList。 这是我尝试的代码: 但是此代码不起作用。 问题答案: 这是正常的:Predicates.containsPattern()在s上操作,您的对象未实现。 您需要编写自己的谓词: 然后使用: 但是
我有一个简短的问题 我有飞行、水上课程和动物课程 如果我只想打印出动物对象数组中的飞行物体 做这样的事安全吗 或 执行此操作并重写toString方法 我是java新手,所以我甚至不确定这两个是否正确。所以欢迎任何帮助 谢谢你的帮助 编辑- 对不起,模棱两可的问题这是我问题的一个例子 我可以做输出 = A.toString() 来获取对象字符串还是我必须做 并重写toString方法以打印出类和示
问题内容: 我是Java的新手。我说,我有一个类 人 。我要列印 上面的代码给出如下输出: 这有什么意义? 该对象是否具有某种唯一标识? 我可以自定义吗?我的意思是编写自己的函数,该函数在打印时会输出? 如果是这样,我该怎么做? 问题答案: 如果要打印任何对象的有意义的内容,则必须实现自己的方法,该方法将覆盖parent()类的方法。默认情况下,所有类(无论您创建什么)都扩展类。 样例代码: 输出