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