繁体   English   中英

流式传输不同的数据

[英]Stream different data types

我正在研究Streams API。

第一行中2发生了什么? 它被视为什么数据类型? 为什么这不是真的

System.out.println(Stream.of("hi", "there",2).anyMatch(i->i=="2"));

这个问题的第二部分是为什么下面的代码不能编译( 2不在引号中 )?

System.out.println(Stream.of("hi", "there",2).anyMatch(i->i==2));

在第一个片段中,您将创建一个Object Stream 2元素是一个Integer ,因此将它与String “2”进行比较会返回false。

在第二个片段中,您无法将任意Object与int 2进行比较,因为没有从Object2转换。

要使第一个片段返回true,您必须将Stream的最后一个元素更改为String (并且还使用equals而不是==以便不依赖于String池):

System.out.println(Stream.of("hi", "there", "2").anyMatch(i->i.equals("2")));

可以使用equals而不是==来修复第二个片段,因为任何Object存在equals

System.out.println(Stream.of("hi", "there",2).anyMatch(i->i.equals(2)));

你应该使用:

System.out.println(Stream.of("hi", "there",2).anyMatch(i->i.equals(2)));

这样做的原因是你正在做的anyMatch的比较是i ,它是一个Object (来自流)并且与int不兼容。

另请注意,第一部分成功编译,因为您将整数(对象)与对象字符串"2"进行比较,因此返回false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM