2016-03-01 181 views
1

我來自JavaScript背景,在JS中我們可以輕鬆映射/更改數組。Java中的地圖集合

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

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

這是類似於Java?

+5

是 - 請參閱Java 8流:http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ – Nayuki

回答

4

肯定:

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(); 
0
List<Integer> arr = Arrays.asList(1,2,3,4); 
List<Integer> dbl = arr 
     .stream() 
     .map(a -> a * 2) 
     .collect(Collectors.toList()); 
0

您可以用流這樣做。

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

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