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

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

Lambda表達式將數組/字符串列表轉換為數組/整數列表

Lambda表達式將數組/字符串列表轉換為數組/整數列表

一只斗牛犬 2019-12-21 12:33:20
由于Java 8帶有強大的lambda表達式,我想編寫一個函數,將字符串的列表/數組轉換為整數,浮點數,雙打等的數組/列表。在普通的Java中,它就像for(String str : strList){   intList.add(Integer.valueOf(str));}但是在給定要轉換為整數數組的字符串數組的情況下,如何使用lambda實現相同的功能。
查看完整描述

3 回答

?
月關寶盒

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

您可以創建輔助方法,該方法將使用上的操作T將類型的列表(數組)轉換為類型的列表(數組)。Umapstream


//for lists

public static <T, U> List<U> convertList(List<T> from, Function<T, U> func) {

    return from.stream().map(func).collect(Collectors.toList());

}


//for arrays

public static <T, U> U[] convertArray(T[] from, 

                                      Function<T, U> func, 

                                      IntFunction<U[]> generator) {

    return Arrays.stream(from).map(func).toArray(generator);

}

并像這樣使用它:


//for lists

List<String> stringList = Arrays.asList("1","2","3");

List<Integer> integerList = convertList(stringList, s -> Integer.parseInt(s));


//for arrays

String[] stringArr = {"1","2","3"};

Double[] doubleArr = convertArray(stringArr, Double::parseDouble, Double[]::new);

請注意, s -> Integer.parseInt(s)可以將其替換為Integer::parseInt(請參閱方法參考)


查看完整回答
反對 回復 2019-12-21
?
MMTTMM

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

List<Integer> intList = strList.stream()

                               .map(Integer::valueOf)

                               .collect(Collectors.toList());


查看完整回答
反對 回復 2019-12-21
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

不需要接受的答案中的幫助方法。流可以與lambda一起使用,或者通常使用Method References縮短。流啟用功能操作。map()轉換元素和/ collect(...)或toArray()將流包裝回數組或集合。


Venkat Subramaniam的演講(視頻)比我更好地解釋了這一點。


1轉換List<String>成List<Integer>


List<String> l1 = Arrays.asList("1", "2", "3");

List<Integer> r1 = l1.stream().map(Integer::parseInt).collect(Collectors.toList());


// the longer full lambda version:

List<Integer> r1 = l1.stream().map(s -> Integer.parseInt(s)).collect(Collectors.toList());

2轉換List<String>為int[]


int[] r2 = l1.stream().mapToInt(Integer::parseInt).toArray();

3轉換String[]為List<Integer>


String[] a1 = {"4", "5", "6"};

List<Integer> r3 = Stream.of(a1).map(Integer::parseInt).collect(Collectors.toList());

4轉換String[]為int[]


int[] r4 = Stream.of(a1).mapToInt(Integer::parseInt).toArray();

5轉換String[]成List<Double>


List<Double> r5 = Stream.of(a1).map(Double::parseDouble).collect(Collectors.toList());

6(獎金)轉換int[]為String[]


int[] a2 = {7, 8, 9};

String[] r6 = Arrays.stream(a2).mapToObj(Integer::toString).toArray(String[]::new);

當然,可能會有更多變化。


另請參見這些示例的Ideone版本??梢詥螕鬴ork,然后運行以在瀏覽器中運行。


查看完整回答
反對 回復 2019-12-21
  • 3 回答
  • 1 關注
  • 5310 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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