एक पंक्ति में:
HashMap<String, Integer> map = (HashMap<String, Integer>) Arrays.asList(str.split(",")).stream().map(s -> s.split(":")).collect(Collectors.toMap(e -> e[0], e -> Integer.parseInt(e[1])));
विवरण:
1) स्प्लिट प्रविष्टि जोड़े और List<String>
को स्ट्रिंग सरणी परिवर्तित आदेश Java 1.8
Arrays.asList(str.split(","))
से
java.lang.Collection.Stream
एपीआई का उपयोग करने में
2) परिणामी स्ट्रिन मानचित्र ग्राम सूची "key:value"
[0] कुंजी के रूप में और [1] मूल्य के रूप में
map(s -> s.split(":"))
3) के साथ एक स्ट्रिंग सरणी के लिए उत्परिवर्तित को
collect(Collector<? super String, Object, Map<Object, Object>> collector)
4) का प्रयोग करें Collectors.toMap()
स्थिर धारा एपीआई से collect
टर्मिनल विधि का उपयोग करें विधि जो इनपुट प्रकार से कुंजी और मूल्य प्रकार में उत्परिवर्तन करने के लिए दो फ़ंक्शन लेती है।
toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
जहां टी इनपुट प्रकार है, के कुंजी प्रकार और यू मान प्रकार है।
5) लैम्ब्डा String
मूल्य के लिए महत्वपूर्ण String
करने और String
Integer
उत्परिवर्तित
toMap(e -> e[0], e -> Integer.parseInt(e[1]))
Java 8
साथ स्ट्रीम और लैम्ब्डा शैली का आनंद लें के बाद।कोई और लूप नहीं!
स्रोत
2015-07-09 10:22:30
तो यह वास्तव में दिए गए स्ट्रिंग के लिए है, हार्डकोडेड समाधान रहते हैं। .. यदि नहीं, तो कृपया हमें बताएं कि आपने अभी तक क्या प्रयास किया है और आपकी समस्या क्या है। – pgras
http://mattgemmell.com/2008/12/08/what-have-you-tried/ –
@pgras मैंने अपनी पोस्ट संपादित की है। मुझे लगता है कि अब समझना जटिल नहीं है। Guava में मुझे एक नई चीज़ खोजने के लिए – Bishan