簡體   English   中英

Java中的地圖集合

[英]Map Collections in Java

我來自JavaScript背景,在JS中,我們可以輕松地映射/更改數組。

var arr = [1,2,3,4];
var doubled = arr.map(function(c) { 
    return c * 2;
});

console.log(doubled); //[2,4,6,8]

在Java中是這樣嗎?

絕對:

Integer arr[] = { 1, 2, 3, 4 };
Arrays.stream(arr).map(i -> i * 2).forEach(System.out::println);

請注意,這不會更改原始數組。 它從源數組中創建一個流,通過應用map函數創建另一個流,並為該流的每個元素執行System.outprintln

采用

Integer newArr[] = Arrays.stream(arr)
        .map(i -> i * 2)
        .collect(Collectors.toList())
        .toArray(new Integer[arr.length]);

將結果流的元素收集到一個Integer數組中。

編輯 :如果您使用的是原始類型,則有一種更有效的方法:

int[] intArr = { 1, 2, 3, 4};
int[] newIntArr = Arrays.stream(intArr).map(i -> i * 2).toArray();
List<Integer> arr = Arrays.asList(1,2,3,4);
List<Integer> dbl = arr
        .stream()
        .map(a -> a * 2)
        .collect(Collectors.toList());

您可以通過流來執行此操作。

Integer[] array = {1, 2, 3, 4};
Integer[] doubled = (Integer[]) Arrays.stream(array).map(i -> i * 2).toArray();

上面的代碼會將原始數組映射到一個新數組,其中每個值都加倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM