यह देखते हुए कि हमारे पास Set<String> stringSet
निम्नलिखित हैं:
जावा 10 (अपरिवर्तनीय सूची)
List<String> strList = stringSet.stream().collect(Collectors.toUnmodifiableList());
जावा 8 (परिवर्तनीय सूची)
import static java.util.stream.Collectors.*;
List<String> stringList1 = stringSet.stream().collect(toList());
विधि के लिए डॉक्टर के अनुसारtoList()
लौटाए गए सूची के प्रकार, परिवर्तनशीलता, क्रमबद्धता या थ्रेड-सुरक्षा पर कोई गारंटी नहीं है; यदि लौटी हुई सूची पर अधिक नियंत्रण की आवश्यकता है, तोCollection (आपूर्तिकर्ता) का उपयोग करें।
इसलिए अगर हमें एक विशिष्ट कार्यान्वयन की आवश्यकता है जैसे ArrayList
हम इसे इस तरह प्राप्त कर सकते हैं:
List<String> stringList2 = stringSet.stream().
collect(toCollection(ArrayList::new));
जावा 8 (गैर-सूचीबद्ध सूचियाँ)
हम Collections::unmodifiableList
विधि का उपयोग कर सकते हैं और पिछले उदाहरणों में दी गई सूची को लपेट सकते हैं। हम अपनी स्वयं की कस्टम विधि भी लिख सकते हैं:
class ImmutableCollector {
public static <T> Collector<T, List<T>, List<T>> toImmutableList(Supplier<List<T>> supplier) {
return Collector.of( supplier, List::add, (left, right) -> {
left.addAll(right);
return left;
}, Collections::unmodifiableList);
}
}
और फिर इसका उपयोग करें:
List<String> stringList3 = stringSet.stream()
.collect(ImmutableCollector.toImmutableList(ArrayList::new));
एक अन्य संभावना यह है कि collectingAndThen
विधि का उपयोग किया जाए जो परिणाम लौटने से पहले कुछ अंतिम परिवर्तन करने की अनुमति देता है:
List<String> stringList4 = stringSet.stream().collect(collectingAndThen(
toCollection(ArrayList::new),Collections::unmodifiableList));
एक टिप्पणी को इंगित करें कि विधि है Collections::unmodifiableList
निर्दिष्ट सूची का एक unmodifiable दृश्य देता है, के अनुसार दस्तावेज़ । एक unmodifiable दृश्य संग्रह एक संग्रह है जो unmodifiable है और एक बैकिंग संग्रह पर एक दृश्य भी है। ध्यान दें कि बैकिंग संग्रह में परिवर्तन अभी भी संभव हो सकता है, और यदि वे होते हैं, तो वे असम्बद्ध दृश्य के माध्यम से दिखाई देते हैं। लेकिन कलेक्टर विधि जावा 10Collectors.unmodifiableList
में सही मायने में अपरिवर्तनीय सूची देती है ।
java.util.Collection
: O (0)