如何使用 Streams 将 using 元素添加到 Collection 集?

How to add using element to a Collection Set using Streams?

目前我正在像这样向 Collection 集合添加一个元素。

Set<Rental> currentFavouriteRentals = currentUser.getFavouriteRentals();
currentFavouriteRentals.add(rental);
currentUser.setFavouriteRentals(currentFavouriteRentals);

有没有办法用不使用 Stream.concat() 的 Streams 做到这一点?

我建议你改造 objects,你在外面更新 User 的收藏夹 这应该发生在 User class Read this OO Principle, TellDon'tAsk

class User {
    private Set<Rental> favoriteRentals;

    public User() {
        this.favoriteRentals = new HashSet<>();
    }

    public Set<Rental> updateFavoriteRentals(Rental rental) {
        this.favoriteRentals.add(rental);
        return this.favoriteRentals;
    }
} 

尽管这可能不满足(或不适合)您的特定示例,但您可以使用[=21=中介绍的mapMulti向现有流添加元素] 16. 比如下面会在每一个偶数之前把99999这个数字加到流中

Random r = new Random();
int [] arr = r.ints(10,1,100).mapMulti((val, consumer)-> {
    if (val%2==0) {
        consumer.accept(99_999);
    }
    consumer.accept(val);
}).toArray();

System.out.println(Arrays.toString(arr));

打印类似

的东西
[99999, 80, 29, 95, 99999, 40, 65, 99999, 22, 23]

如果你想在每个偶数之后加上它,那么先接受这个值,然后再做偶校验测试。