簡體   English   中英

如何迭代 inside.map() 中的字符串數組

[英]How to Iterate over a String Array inside .map()

所以我在一個方法中有這些行 -

private List<String> buildLwaScopePermissionsList(final List<Permission> permissions) {
       return Optional.ofNullable(permissions).orElse(Collections.emptyList())
               .stream()
               .map(Permission::getName)
               .map(Permission.Name::getValues)
               .collect(collectingAndThen(toList(), ImmutableList::copyOf));
   }

where Permission is a class and Name is a static inner class inside Permission Class, and getName() is a non-static method inside Permission class and getValues() is a static method inside Name class. 問題是 getValues 方法返回一個字符串數組。 我無法從返回的值中取出 1 個項目並與 Name 連接並將其存儲在列表中。

 public static String[] getValues() {
            return values.clone();
        }

您可以使用flatMap將多個值展平為一個 stream。

如果您有單個權限,則可以通過執行Arrays.stream(Permission.Name.getValues()).map(val -> permission.getName() + val)獲得串聯名稱的 Stream 。 通過使用flatMap ,您可以將所有這些值放入原始 Stream 中:

private List<String> buildLwaScopePermissionsList(final List<Permission> permissions) {
   return Optional.ofNullable(permissions).orElse(Collections.emptyList())
           .stream()
           .flatMap(permission -> Arrays.stream(Permission.Name.getValues()).map(val -> permission.getName() + val))
           .collect(collectingAndThen(toList(), ImmutableList::copyOf));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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