[英]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進行比較,因為沒有從Object
到2
轉換。
要使第一個片段返回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.