第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

生成一個(gè)包含整數(shù) (0, 1, -1, 2, -2, 3, -3, ...) 的無(wú)限 Stream

生成一個(gè)包含整數(shù) (0, 1, -1, 2, -2, 3, -3, ...) 的無(wú)限 Stream

犯罪嫌疑人X 2023-03-17 15:45:53
我目前正在準(zhǔn)備考試并正在執(zhí)行以下任務(wù):生成包含整數(shù)的無(wú)限流(0, 1, -1, 2, -2, 3, -3, ...)。以下流生成正常的無(wú)限流:Stream<Integer> infiniteStream = Stream.iterate(1, i -> i + 1);是否有同時(shí)產(chǎn)生正數(shù)和負(fù)數(shù)的方法或 lambda 表達(dá)式?
查看完整描述

4 回答

?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

是這樣的:

Stream<Integer> infiniteStream = Stream.iterate(1, i -> i > 0 ? -i : (-i + 1));

或者,如果你想開(kāi)始0

Stream<Integer> infiniteStream = Stream.iterate(0, i -> i > 0 ? -i : (-i + 1));

當(dāng)然,這也可以通過(guò)以下方式完成IntStream

IntStream infiniteStream = IntStream.iterate(0, i -> i > 0 ? -i : (-i + 1));


查看完整回答
反對(duì) 回復(fù) 2023-03-17
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

我想提供一個(gè)替代 Erans 答案的方法。


由于您已經(jīng)知道基本的無(wú)限流是如何工作的,因此您可以使用進(jìn)一步的流操作,例如flatMap在它的基礎(chǔ)上構(gòu)建:


    final Stream<Integer> eransAnswer = Stream.iterate(1, i -> i > 0 ? -i : (-i + 1));


    final Stream<Integer> alternative = Stream.iterate(1, i -> i + 1)

            .flatMap(i -> Stream.of(i, -i));


    System.out.println(eransAnswer.limit(6).collect(Collectors.toList()));

    System.out.println(alternative.limit(6).collect(Collectors.toList()));

flatMap請(qǐng)注意,這僅在延遲評(píng)估時(shí)才有效。我把 放在limit那里,這樣我就可以在某個(gè)結(jié)果 ( toList) 中收集它,但它也適用limit于flatMap.


有時(shí),與其將“復(fù)雜性”放入您的生成公式中,不如將其拆分并使用中間流操作可能有意義也可能沒(méi)有意義。如果您的思維過(guò)程是交替數(shù)字,請(qǐng)使用 Erans 答案。如果你寧愿認(rèn)為對(duì)于無(wú)限的自然數(shù)流,你想用它的倒數(shù)復(fù)制每個(gè)數(shù)字,而不是用替代方案更清楚地傳達(dá)意圖。


編輯:要處理零,你可以做Stream.concat(Stream.of(0), alternative)


查看完整回答
反對(duì) 回復(fù) 2023-03-17
?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您仔細(xì)觀察下面的方案,它可能比您想象的要容易得多:


0  1   2    3    4    5


|  |   |    |    |    |


0  1  (-1)  2   (-2)  3

現(xiàn)在,您可以這樣看:如果數(shù)字是偶數(shù),則結(jié)果是該索引除以二(并減去它);如果數(shù)字是奇數(shù),則結(jié)果是該索引除以 2 加 1。


您可以通過(guò)簡(jiǎn)單地查看最后一位來(lái)判斷數(shù)字是奇數(shù)還是偶數(shù):if it is 1=> odd; 如果它是0=> 偶數(shù)。您可以通過(guò)將數(shù)字向右移動(dòng)一次來(lái)將數(shù)字除以二,如下所示:


IntStream.range(0, 10)

         .map(x -> (x & 1) == 0 ? -(x >> 1) : (x >> 1) + 1)

         .forEachOrdered(System.out::println);


查看完整回答
反對(duì) 回復(fù) 2023-03-17
?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

如果你想讓負(fù)數(shù)引出一對(duì)整數(shù)并顯示 -1,1,-2,2,-3,3,.. 你并執(zhí)行此操作。


IntStream.iterate(1, i -> i + 1).flatMap(a -> IntStream.of(-a, a));

IntStream.iterate(-1,i -> i < 0 ? -i: -i - 1);


查看完整回答
反對(duì) 回復(fù) 2023-03-17
  • 4 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)