![](/img/trans.png)
[英]Should primitive types or non-primitive types be preferred in Java interfaces?
[英]Java 8 - how to process arrays of non-primitive types?
我正在使用Google Maps API,並希望處理搜索結果。 結果以非基本類型PlacesSearchResult[]
的數組形式返回。
我想使用地點搜索結果數組中的數據構建一個由緯度/經度對表示的位置數組LatLng[]
。
這是我使用Java 7的方法:
PlacesSearchResult[] searchResults = placesSearchResponse.results;
int placesCount = searchResults.length;
LatLng[] locations = new LatLng[placesCount];
for (int i = 0; i < placesCount; i++) {
locations[i] = searchResults[i].geometry.location;
}
我決定在這里嘗試使用Java 8,但對如何處理非基本數組感到困惑。 如果它是原始類型的數組,我將執行以下操作:
int[] a = ...
int[] result = IntStream.range(0, a.length)
.map(i -> a[i])
.toArray();
處理對象數組的正確方法是什么?
您可以從searchResults
創建流, map
其map
到LatLng
,然后按以下方式收集到數組:
Arrays.stream(searchResults)
.map(s -> s.geometry.location)
.toArray(LatLng[]::new);
至於你當前的解決方案,它的問題是,而不是使用IntStream.map
你應該使用mapToObj
為你trasforming對象類型,而不是原始類型,然后用指定的數組元素的類型,完成它toArray
方法。 例:
IntStream.range(0, searchResults.length)
.mapToObj(i -> a[i].geometry.location)
.toArray(LatLng[]::new);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.