gpt4 book ai didi

java - 重用同一个数组而不是声明一个新数组是否有意义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:18 26 4
gpt4 key购买 nike

重用同一个数组而不是在 .collectInto 中声明有意义吗?

return loadSortedSparseNumbersObservable()
.collectInto(
new numbers[1000],
(array, number) -> {
int index = computeTrueIndex(...);
array[index] = number;
}
)
.map(array -> );

我们或许可以用类似的东西替换上面的代码:

long[] array = new long[700];
return loadSortedSparseNumbersObservable()
.doOnNext(
Arrays.fill(array, 0L),
(array, number) -> {
int index = computeTrueIndex(...);
array[index] = number;
}
)
.toCompletable()
.andThen(Single.just(array))
.map(array -> );

不过我真的不喜欢改变对象。

最佳答案

你的第二个例子有更多的运营商,因此可能会有更多的开销,当然阅读和理解起来也更难看。

您的两个示例中的最大问题是返回的 Observable 不能安全地重用。对同一 Observable 的并发调用将在数组上进行交互。安全的方法是为每个订阅创建一个新数组。使用 collect 而不是 collectInto:

return loadSortedSparseNumbersObservable()
.collect(
() -> new numbers[1000],
(array, number) -> {
int index = computeTrueIndex(...);
array[index] = number;
}
)
.map(array -> );

关于java - 重用同一个数组而不是声明一个新数组是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com