簡體   English   中英

Java 8中lambda的這種用法是否正確?

[英]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.

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