जावा 8 में Map<String, Double>
से List<Pair<String, Double>>
कैसे परिवर्तित करें?जावा में मानचित्र को सूची में कैसे परिवर्तित करें 8
मैं इस कार्यान्वयन लिखा था, लेकिन यह कुशल
Map<String, Double> implicitDataSum = new ConcurrentHashMap<>();
//....
List<Pair<String, Double>> mostRelevantTitles = new ArrayList<>();
implicitDataSum.entrySet().stream().
.sorted(Comparator.comparing(e -> -e.getValue()))
.forEachOrdered(e -> mostRelevantTitles.add(new Pair<>(e.getKey(), e.getValue())));
return mostRelevantTitles;
मुझे पता है कि यह काम करता है .collect(Collectors.someMethod())
का उपयोग कर चाहिए नहीं है। लेकिन मुझे समझ में नहीं आता कि यह कैसे करें।
ध्यान दें कि '-e.getValue()' NaN को पुन: व्यवस्थित नहीं करता है। आगे के आदेश में सूची के अंत में 'डबल.NAN' मान होने लगता है। यून्री माइनस का उपयोग करके आप * नाइन को छोड़कर सबकुछ वापस कर देंगे: वे अभी भी सूची के अंत में होंगे। –
हाँ, 'Map.Entry.comparingByValue (Comparator.reverseOrder()) 'या' संग्रह। रिवर्सऑर्डर (Map.Entry.comparingByValue()) '। यदि ऋणात्मक मानों की तुलना करना इरादा है [टैगिर ने अंतर समझाया] (http://stackoverflow.com/questions/35107550/how-to-convert-map-to-list-in-java-8#comment57966768_35107595), फिर 'तुलनाकर्ता मूल्यों के पुनः बॉक्सिंग से बचने के लिए .comparing डबल 'को प्राथमिकता दी जानी चाहिए। – Holger