我正在使用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();
处理对象数组的正确方法是什么?
答案 0 :(得分:3)
您可以创建从searchResults
到map
的{{1}}流,然后按如下所示收集到数组:
LatLng
对于当前的解决方案,问题在于,在转换对象类型而不是原始类型时,应该使用Arrays.stream(searchResults)
.map(s -> s.geometry.location)
.toArray(LatLng[]::new);
而不是使用IntStream.map
,然后通过指定mapToObj
方法中数组元素的类型。例如:
toArray