Java 8 流式传输一个Collection,只将过滤值的特定字段添加到一个String列表中

Java 8 stream a Collection and add only a specific field of the filtered values to a List of String

我有一组帐户对象。我想根据价格是否大于 100 流式传输此集合并进行过滤。然后仅将这些帐户 ID 添加到列表

这就是我使用的 forEach

 List<String> filteredAcctList = new ArrayList<String>()
  forEach(Account acct:accountList){
      if(acct.getPrice() >100){
         filteredAcctList.add(acct.getAccountId())
       }
  }

我正在尝试使用 Java 8 流来完成相同的操作,但不确定如何创建仅包含帐户 ID 的 ArrayList。

您需要使用 map 才能将您的 Account 项目“映射”到 String

List<String> filteredAccList = 
    accountList
        .stream()
        .filter(a -> a.getPrice() > 100)
        .map(Account::getAccountId)
        .collect(Collectors.toList());