Sinto te desapontar, mas para este caso a melhor solução também não usa streams. Com o Map é bem fácil verificar se já existe um item correspondente ao produto sendo adicionado. E escolhi um HashMap como implementação, pois segundo a documentação, faz a busca em tempo constante (melhor que a busca linear feita no ArrayList).
Mas aqui caímos no mesmo problema da solução anterior. O resultado é um Optional, e para encadear tudo você teria que usar ifPresentOrElse (para Java >= 9), ou as soluções já propostas para o Java 8 (a solução deste link ou o código que sugeri com isPresent()).
Sinceramente, não acho que streams seja a melhor solução para este caso. E se for para forçar tudo em um único encadeamento, pior ainda. O ideal é escolher a solução mais adequada para o problema, em vez de tentar "encaixar" uma solução que "eu quero/preciso usar", mesmo que não seja a melhor opção.