簡體   English   中英

如何將列表轉換為列表<Optional> ?

[英]How to convert a List to List<Optional>?

如何將List轉換為List<Optional>

以下代碼產生編譯錯誤:

public Collection<Optional<UserMeal>> getAll() {

    Comparator comparator = new SortedByDate();
    List<UserMeal> mealList = new ArrayList<>(repository.values());
    Collections.sort(mealList,comparator);
    Collections.reverse(mealList);

    **List<Optional<UserMeal>> resultList = Optional.of(mealList);**

    return resultList;
}

Optional.of(mealList)返回一個Optional<List<UserMeal>> ,而不是一個List<Optional<UserMeal>>

要獲得所需的List<Optional<UserMeal>> ,您應該用Optional包裝List每個元素:

List<Optional<UserMeal>> resultList = 
    mealList.stream()
            .map(Optional::ofNullable)
            .collect(Collectors.toList());

注意我使用Optional::ofNullable而不是Optional::of ,因為如果您的輸入List包含任何空元素,后者會產生NullPointerException

mealList 到 Optional 的簡單轉換

Optional.ofNullable(mealList)

暫無
暫無

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

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