2012-12-07 28 views
25

Nhìn qua https://github.com/google/guava/wiki/FunctionalExplained Tôi thấy các hoạt động như transform, điều này sẽ biến đổi danh sách nhưng vẫn giữ cùng một thẻ. Làm thế nào tôi có thể thực hiện một phép biến đổi kết quả trong một cardinality khác nhau? ví dụ. (pseudocode) List(1,2,3).transform(i => List(i, i)) ->List(1,1,2,2,3,3)Bản đồ tương đương với bản đồ phẳng của Scala là gì?

+0

Kể từ khi nào Scala là một mã giả? :) – Natix

+0

@Natix Tôi nghĩ Scala thực sự linh hoạt hơn về mặt cú pháp hơn so với mã giả :) – toniedzwiedz

Trả lời

7

Tôi không nghĩ có bản dịch trực tiếp, nhưng transform tiếp theo là concat phải tương đương.

3

Trong Eclipse Collections, collect() là tương đương với Scala của map(), và flatCollect() là tương đương với Scala của flatMap().

Dưới đây là ví dụ về cách sử dụng flatCollect with Java 8 Lambdas.

Lưu ý: Tôi là người gửi thư cho Bộ sưu tập Eclipse.

2

Chú ý đến một điều, mặc dù: Phương thức bản đồ của Scala trả về các bộ sưu tập mới, trong khi phương thức transform() trong ổi trở về một khung nhìn đã chuyển đổi của bộ sưu tập gốc. Đây là một sự khác biệt rất tinh tế. Bạn cần quyết định xem 'xem qua bộ sưu tập gốc' có phù hợp với ngữ cảnh của bạn hay không.

Các vấn đề liên quan