mirror of
https://github.com/sjsdfg/effective-java-3rd-chinese.git
synced 2024-12-26 21:00:48 +08:00
Update 47. 优先使用Collection而不是Stream来作为方法的返回类型.md
This commit is contained in:
parent
0dcd804ec1
commit
04bcf81c97
@ -61,7 +61,7 @@ public static <E> Stream<E> streamOf(Iterable<E> iterable) {
|
||||
|
||||
如果你需要返回一很大但可以简洁地表示的序列,请考虑实现一个专用集合。 例如,假设返回给定集合的幂集(power set:就是原集合中所有的子集(包括全集和空集)构成的集族),该集包含其所有子集。 {a,b,c} 的幂集为 {{},{a},{b},{c},{a,b},{a,c},{b,c},{a,b, c}}。 如果一个集合具有 n 个元素,则幂集具有 2n 个。 因此,你甚至不应考虑将幂集存储在标准集合实现中。 但是,在 `AbstractList` 的帮助下,很容易为此实现自定义集合。
|
||||
|
||||
诀窍是使用幂集中每个元素的索引作为位向量(bit vector),其中索引中的第 n 位指示源集合中是否存在第 n 个元素。 本质上,从 0 到 2n-1 的二进制数和 n 个元素集和的幂集之间存在自然映射。 这是代码:
|
||||
诀窍是使用幂集中每个元素的索引作为位向量(bit vector),其中索引中的第 n 位指示源集合中是否存在第 n 个元素。 本质上,从 0 到 2<sup>n</sup>-1 的二进制数和 n 个元素集和的幂集之间存在自然映射。 这是代码:
|
||||
|
||||
```java
|
||||
// Returns the power set of an input set as custom collection
|
||||
|
Loading…
Reference in New Issue
Block a user