我來自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?
我來自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?
肯定:
Integer arr[] = { 1, 2, 3, 4 };
Arrays.stream(arr).map(i -> i * 2).forEach(System.out::println);
注意,這是在不改變原來的數組。它從源數組中創建一個流,通過應用map函數創建另一個流,併爲流的每個元素執行System.out
的println
。
使用
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();
上面的代碼會將原始數組映射到每個數值加倍的新數組。
是 - 請參閱Java 8流:http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ – Nayuki