簡體   English   中英

Java 8-如何處理非基本類型的數組?

[英]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創建流, mapmapLatLng ,然后按以下方式收集到數組:

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.

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