我有一个对象列表:
[class RetailerItemVariant {
sku: 008884303996
isAvailable: true
price: 70.0
}, class RetailerItemVariant {
sku: 008884304030
isAvailable: true
price: 40.0
},
...
在Java 8中提取SKU数组的最佳方法是什么? e.g:
["008884303996", "008884304030", ...]
我是Java的新手,使用map()函数在Javascript中非常容易,但是我无法在Java中找到一种类似的简单方法...
答案 0 :(得分:6)
由于您使用的是Java 8,stream api
可以帮助您:
List<String> skus = itemList.stream()
.map(Item::getSku)
.collect(Collectors.toList());
答案 1 :(得分:2)
尝试使用stream java 8:
List<String> listSku = list.stream().map(r->r.getSku())
.collect(Collectors.toList())
答案 2 :(得分:2)
同样在Java 8中,您可以使用map
:
List<String> listSku = listRetailerItemVariant.stream()
.map(RetailerItemVariant::getSku)
.collect(toList());
答案 3 :(得分:0)
它与开始集合和结束结构不同,但您的基本代码应如下所示:
mylist
.stream()
.map(variant -> variant.getSku())
.collect(Collectors.toCollection(ArrayList::new)))
作为开始结构,如果您使用数组而不是集合,请从myList.stream
移至Stream.of(variantArray).map()
。
对于您的结束结构,请调整是否需要HashSet(ArrayList::new
)或链接列表(HashSet::new
)而不是LinkedList::new
如果您有许多项目变体并且您想以任何顺序快速收集他们的Skus,请考虑并行流处理,将parallel()
添加到{{1}功能:
stream()