## GroupBy
將一個Observable分拆為一些Observables集合,它們中的每一個發射原始Observable的一個子序列

`GroupBy`操作符將原始Observable分拆為一些Observables集合,它們中的每一個發射原始Observable數據序列的一個子序列。哪個數據項由哪一個Observable發射是由一個函數判定的,這個函數給每一項指定一個Key,Key相同的數據會被同一個Observable發射。
RxJava實現了`groupBy`操作符。它返回Observable的一個特殊子類`GroupedObservable`,實現了`GroupedObservable`接口的對象有一個額外的方法`getKey`,這個Key用于將數據分組到指定的Observable。
有一個版本的`groupBy`允許你傳遞一個變換函數,這樣它可以在發射結果`GroupedObservable`之前改變數據項。
注意:`groupBy`將原始Observable分解為一個發射多個`GroupedObservable`的Observable,一旦有訂閱,每個`GroupedObservable`就開始緩存數據。因此,如果你忽略這些`GroupedObservable`中的任何一個,這個緩存可能形成一個潛在的內存泄露。因此,如果你不想觀察,也不要忽略`GroupedObservable`。你應該使用像`take(0)`這樣會丟棄自己的緩存的操作符。
如果你取消訂閱一個`GroupedObservable`,那個Observable將會終止。如果之后原始的Observable又發射了一個與這個Observable的Key匹配的數據,`groupBy`將會為這個Key創建一個新的`GroupedObservable`。
`groupBy`默認不在任何特定的調度器上執行。
* Javadoc: [groupBy(Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#groupBy(rx.functions.Func1))
* Javadoc: [groupBy(Func1,Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#groupBy(rx.functions.Func1,%20rx.functions.Func1))
- ReactiveX
- Observables
- Single
- Subject
- Scheduler
- Operators
- 創建操作
- Create
- Defer
- Empty/Never/Throw
- From
- Interval
- Just
- Range
- Repeat
- Start
- Timer
- 變換操作
- Buffer
- FlatMap
- GroupBy
- Map
- Scan
- Window
- 過濾操作
- Debounce
- Distinct
- ElementAt
- Filter
- First
- IgnoreElements
- Last
- Sample
- Skip
- SkipLast
- Take
- TakeLast
- 結合操作
- And/Then/When
- CombineLatest
- Join
- Merge
- StartWith
- Switch
- Zip
- 錯誤處理
- Catch
- Retry
- 輔助操作
- Delay
- Do
- Materialize/Dematerialize
- ObserveOn
- Serialize
- Subscribe
- SubscribeOn
- TimeInterval
- Timeout
- Timestamp
- Using
- To
- 條件和布爾操作
- All/Contains/Amb
- DefaultIfEmpty
- SequenceEqual
- SkipUntil/SkipWhile
- TakeUntil/TakeWhile
- 算術和聚合操作
- Average/Concat/Reduce
- Max/Min/Count/Sum
- 異步操作
- 連接操作
- Connect
- Publish
- RefCount
- Replay
- 轉換操作
- 阻塞操作
- 字符串操作
- 按字母順序的操作符列表
- RxJava文檔和教程
- RxJava入門指南
- RxJava使用示例
- 實現自定義操作符
- 自定義插件
- Backpressure
- 錯誤處理
- Android模塊
- 參與開發
- 補充閱讀材料