আমাদের যে বিবেচনা করে আমরা 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()
তালিকার ধরণ, পরিবর্তনীয়তা, সিরিয়ালযোগ্যতা বা থ্রেড-সুরক্ষার কোনও গ্যারান্টি নেই returned যদি প্রত্যাবর্তিত তালিকার উপর আরও নিয়ন্ত্রণের প্রয়োজন হয়, সারণি (সরবরাহকারী) ব্যবহার করুন।
সুতরাং যদি আমাদের একটি নির্দিষ্ট প্রয়োগের প্রয়োজন হয় যেমন 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 অনুসারে নির্দিষ্ট তালিকার একটি অবিশ্বাস্য দৃশ্য প্রদর্শন করে । অপরিবর্তিতযোগ্য ভিউ সংগ্রহটি এমন একটি সংগ্রহ যা অনিবার্যযোগ্য এবং এটি একটি ব্যাকিং সংগ্রহের মধ্যেও একটি ভিউ। নোট করুন যে ব্যাকিং সংগ্রহে পরিবর্তনগুলি এখনও সম্ভব হতে পারে এবং যদি এটি ঘটে থাকে তবে তারা অবিস্মরণীয় দৃশ্যের মাধ্যমে দৃশ্যমান। তবে সংগ্রাহক পদ্ধতি জাভা 10-এ সত্যিকারের অপরিবর্তনীয় তালিকা ফিরিয়ে দেয় ।Collectors.unmodifiableList
java.util.Collection: ও (0)