[英]How to use Java Stream map for mapping between different types?
我有兩個相同大小的數組:
int[] permutation
T[] source
我想這樣做
Arrays.stream(permutation).map(i -> source[i]).toArray();
但它不會起作用: 不兼容的類型:lambda表達式中的錯誤返回類型
帶有int[]
Arrays.stream
將為您提供一個IntStream
因此map
將需要一個IntUnaryOperator
(函數int -> int
)。
你提供的函數是int -> T
類型,其中T是一個對象(如果由於取消裝箱而T
是一個Integer
,它將起作用,但對於無界泛型類型參數,假設它是泛型類型則不起作用)。
您正在尋找的是使用mapToObj
,它需要一個IntFunction
(一個函數int -> T
)並返回一個Stream<T>
:
//you might want to use the overloaded toArray() method also.
Arrays.stream(permutation).mapToObj(i -> source[i]).toArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.