gpt4 book ai didi

Java 8 - 如何处理非原始类型的数组?

转载 作者:行者123 更新时间:2023-11-30 07:43:13 26 4
gpt4 key购买 nike

我正在使用 Google map 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 创建一个流,将其mapLatLng,然后收集到一个数组,如下所示:

Arrays.stream(searchResults)
.map(s -> s.geometry.location)
.toArray(LatLng[]::new);

至于您当前的解决方案,问题在于您应该使用 mapToObj 而不是使用 IntStream.map,因为您正在转换为对象类型而不是原始类型types 然后通过在 toArray 方法中指定数组元素的类型来完成它。示例:

IntStream.range(0, searchResults.length)
.mapToObj(i -> a[i].geometry.location)
.toArray(LatLng[]::new);

关于Java 8 - 如何处理非原始类型的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53696278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com