簡體   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