亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將Java 8流轉換為數組?

如何將Java 8流轉換為數組?

ibeautiful 2019-09-18 14:43:12
將Java 8 Stream轉換為數組的最簡單/最簡單的方法是什么?
查看完整描述

3 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

最簡單的方法是使用toArray(IntFunction<A[]> generator)帶有數組構造函數引用的方法。這在方法的API文檔中有所建議。


String[] stringArray = stringStream.toArray(String[]::new);

它的作用是找到一個方法,它接受一個整數(大?。┳鳛閰担⒎祷匾粋€String[],這正是(其中一個重載)的new String[]作用。


你也可以寫自己的IntFunction:


Stream<String> stringStream = ...;

String[] stringArray = stringStream.toArray(size -> new String[size]);

這樣做的目的IntFunction<A[]> generator是將一個整數(數組的大?。┺D換為一個新數組。


示例代碼:


Stream<String> stringStream = Stream.of("a", "b", "c");

String[] stringArray = stringStream.toArray(size -> new String[size]);

Arrays.stream(stringArray).forEach(System.out::println);

打?。?/p>


a

b

c


查看完整回答
反對 回復 2019-09-18
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

如果你想從一個Stream獲得一個整數數組,值為1到10,你可以使用IntStream。


在這里,我們使用Stream.of方法創建Stream,并使用mapToInt將Stream轉換為IntStream。然后我們可以調用IntStream的toArray方法。


Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9,10);

//or use this to create our stream 

//Stream<Integer> stream = IntStream.rangeClosed(1, 10).boxed();

int[] array =  stream.mapToInt(x -> x).toArray();

如果沒有Stream,只使用IntStream,這是同樣的事情


int[]array2 =  IntStream.rangeClosed(1, 10).toArray();


查看完整回答
反對 回復 2019-09-18
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您可以使用這個簡單的代碼塊將java 8流轉換為數組:


 String[] myNewArray3 = myNewStream.toArray(String[]::new);

但是讓我們更多地解釋一下,首先,讓我們創建一個填充了三個值的字符串列表:


String[] stringList = {"Bachiri","Taoufiq","Abderrahman"};

從給定的數組創建一個流:


Stream<String> stringStream = Arrays.stream(stringList);

我們現在可以在這個流Ex上執行一些操作:


Stream<String> myNewStream = stringStream.map(s -> s.toUpperCase());

最后使用以下方法將其轉換為java 8數組:


1-Classic方法(功能界面)


IntFunction<String[]> intFunction = new IntFunction<String[]>() {

    @Override

    public String[] apply(int value) {

        return new String[value];

    }

};



String[] myNewArray = myNewStream.toArray(intFunction);

2 -Lambda表達


 String[] myNewArray2 = myNewStream.toArray(value -> new String[value]);

3-方法參考


String[] myNewArray3 = myNewStream.toArray(String[]::new);

方法參考說明:


這是編寫lambda表達式的另一種方式,它完全等同于另一種。


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關注
  • 2129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號