2012-12-07 12 views
25

https://github.com/google/guava/wiki/FunctionalExplained के माध्यम से देख रहे हैं मैं transform जैसे संचालन देखता हूं, जो एक सूची को बदल देगा लेकिन समान कार्डिनिटी बनाएगा। मैं एक रूपांतरण कैसे कर सकता हूं जिसके परिणामस्वरूप एक अलग कार्डिनिटी हो? जैसे (स्यूडोकोड) List(1,2,3).transform(i => List(i, i)) ->List(1,1,2,2,3,3)साला के फ्लैटमैप के बराबर अमरूद क्या है?

+0

जब वैध स्केल एक छद्म कोड है? :) – Natix

+0

@ नेटिक्स मुझे लगता है कि स्कूला स्यूडोकोड की तुलना में वाक्यविन्यास के संदर्भ में वास्तव में अधिक लचीला है :) – toniedzwiedz

उत्तर

7

मैं वहाँ एक सीधा अनुवाद है नहीं लगता है, लेकिन transformconcat के बाद बराबर होना चाहिए।

3

Eclipse Collections में, collect() स्काला के map() के बराबर है, और flatCollect() स्काला के flatMap() के बराबर है।

यहां फ्लैटकोलेक्ट with Java 8 Lambdas का एक उदाहरण उपयोग है।

नोट: मैं ग्रहण संग्रह के लिए एक कमिटर हूं।

2

एक चीज़ पर ध्यान दें, हालांकि: स्कैला के मानचित्र विधियां नए संग्रह लौटाती हैं, जबकि गुवा में ट्रांसफॉर्म() विधि मूल संग्रह का एक रूपांतरित दृश्य देता है। यह एक बहुत सूक्ष्म अंतर है। आपको यह तय करने की आवश्यकता है कि 'मूल संग्रह पर दृश्य' आपके संदर्भ के लिए उपयुक्त है या नहीं।

संबंधित मुद्दे