簡體   English   中英

如何使用Java Stream map在不同類型之間進行映射?

[英]How to use Java Stream map for mapping between different types?

我有兩個相同大小的數組:

  1. int[] permutation
  2. 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.

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