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

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

如何從內(nèi)聯(lián)<填充列表<>?

如何從內(nèi)聯(lián)<填充列表<>?

慕田峪9158850 2022-09-28 15:58:22
我想用隨機(jī)整數(shù)的元素填充List,范圍為0到。為什么方法有效,無效?numberOfElementsnumberOfElements/10populateListStream1()populateListStream2()public static List<Integer> populateListStream1(int numberOfElements) {    return Stream.generate(new Random()::nextDouble)            .limit(numberOfElements)            .map(e -> (int)(e*numberOfElements/10))            .collect(Collectors.toList());}public static List<Integer> populateListStream2(int numberOfElements) {    return IntStream.range(0,numberOfElements)            .map(e -> random.nextInt(numberOfElements/10))            .collect(Collectors.toList());}
查看完整描述

3 回答

?
MYYA

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

在第二個(gè)示例中,該類中的 nextInt() 返回一個(gè)基元,該基元無法收集到 .添加一個(gè)調(diào)用,這會(huì)將 的 轉(zhuǎn)換為它們的包裝類:RandomintListboxedintInteger

public static List<Integer> populateListStream2(int numberOfElements){    return IntStream.range(0,numberOfElements)
                    .map(e -> random.nextInt(numberOfElements/10))
                    .boxed()
                    .collect(Collectors.toList());
}

但是第一個(gè)也通過鑄造返回了原始的int!

是的,但它是在 中,所以它被自動(dòng)裝箱到.您可以通過運(yùn)行以下操作來判斷:StreamInteger

Stream.generate(new Random()::nextDouble)
        .limit(numberOfElements)
        .map(e -> (int)(e*numberOfElements/10))
        .peek(e -> System.out.println(e.getClass()))
        .collect(Collectors.toList());

哪些打?。?/p>

class java.lang.Integer

后者是.的好處之一是避免自動(dòng)裝箱和拆箱。除非您顯式調(diào)用,否則它不會(huì)框IntStreamIntStreamboxed()


另請(qǐng)注意,Random 類中的一些方法已經(jīng)返回隨機(jī)數(shù),如 ints() 和 doubles()


查看完整回答
反對(duì) 回復(fù) 2022-09-28
?
慕絲7291255

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

第二個(gè)不起作用,因?yàn)槟褂玫氖前?int 類型的 IntStream。您必須在 之前致電盒裝()。但更好的解決方案是使用 mapToObj() 而不是:map()map()

public static List<Integer> populateListStream2(int numberOfElements) { 
   return IntStream.range(0, numberOfElements)
            .mapToObj(e -> random.nextInt(numberOfElements / 10))
            .collect(Collectors.toList());
}

在這種情況下,值將像在方法中一樣自動(dòng)裝箱。populateListStream2()

或者,我建議使用隨機(jī).ints() 來生成一個(gè)整數(shù)流。


查看完整回答
反對(duì) 回復(fù) 2022-09-28
?
料青山看我應(yīng)如是

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

將其裝入包裝器對(duì)應(yīng)的類 。另外,您可以嘗試如下操作:intInteger


  public static List<Integer> populateListStream3(int numberOfElements) {

        List<Integer> listOfIntegers = new Random().ints(numberOfElements, 0, numberOfElements/10).boxed().collect(Collectors.toList());

        return listOfIntegers;

    }


查看完整回答
反對(duì) 回復(fù) 2022-09-28
  • 3 回答
  • 0 關(guān)注
  • 135 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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