[英]Is this correct usage of lambdas in Java 8?
final List<String> userIds = request.getUserIds();
final List<String> keys = userIds.stream().map(p -> {
return removePrefix(p);
}).collect(Collectors.toList());
基本上,在列表中每個鍵userIds
包含一個前綴“_user”,我想刪除每一個關鍵。 因此,我在列表的每個項目上調用removePrefix
函數,並將結果存儲在另一個稱為“鍵”的列表中
是的,這很好,盡管您可以使用方法引用和靜態導入使它更短並且更易讀:
final List<String> keys = userIds.stream()
.map(this::removePrefix)
.collect(toList());
@assylias的答案很好,但是如果您不擔心就地修改列表(並且可以通過ListIterator#set
方法修改列表),那么一個很好的選擇是使用replaceAll
:
final List<String> userIds = request.getUserIds();
userIds.replaceAll(this::removePrefix);
replaceAll
在這里可以工作,因為您的函數是從T到T的函數(在您的情況下,T是String
),因此基本上是UnaryOperator
,它是Function<T,T>
。
如果您想應用的映射是從T到U,那么獲取列表的流並通過Stream#map
方法(就像您所做的那樣)進行Stream#map
是標准的習慣用法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.