আমি কোনও ইনট অ্যারে তালিকায় রূপান্তরিত করার চেষ্টা করছিলাম এবং আমি জাভা 8 স্ট্রিম ব্যবহারের অপরিচিত পথটি নিয়েছি এবং এটি নিয়ে এসেছি
Arrays.stream(arr).boxed().collect(Collectors.toList());
আমার এখনও এই লাইনটি পুরোপুরি বুঝতে অসুবিধা হচ্ছে, বেশিরভাগ ক্ষেত্রে,
কেন
Collectors.toList()
এই ক্ষেত্রে একটিArrayList<Integer>
বাস্তবায়নList
ইন্টারফেস ফিরে আসে ? কেনLinkedList<Integer>
বা অন্য কোনও জেনেরিক শ্রেণিList
ইন্টারফেসের সাথে মানাবে না ? আমি এই সম্পর্কে কিছু খুঁজে, একটি সংক্ষিপ্ত ArrayList এর উল্লেখ করা ছাড়া তাদের করতে এখানে , এপিআই নোট বিভাগে।বাম প্যানেল মানে কি? স্পষ্টতই জেনেরিক রিটার্ন টাইপ ( আমার কোডটিতে এখানে)। এবং আমি মনে করি পদ্ধতিটির জেনেরিক ধরণের আর্গুমেন্ট, তবে সেগুলি কীভাবে নির্দিষ্ট করা হয়? আমি কালেক্টর ইন্টারফেস ডকটি সন্ধান করেছি এবং এটি শোষণ করতে সক্ষম হইনি।
Stream.collect()
R
ArrayList<Integer>
<R, A>
Collectors.toList()
এই ক্ষেত্রে কেন একটি ফেরত দেয় ArrayList<Integer>
" এটি কোনওরূপে ফিরে আসে না ArrayList
। List
বাস্তবায়ন করা হয় অনির্দিষ্ট করে, যাতে আপনি বাস্তবায়ন এটা ফেরৎ উপর নির্ভর করতে পারবে না। যেমন জাভাদোক বলেছেন: " তালিকার ধরণ , পরিবর্তন, সিরিয়ালাইজিবিলিটি বা থ্রেড-সুরক্ষার কোনও গ্যারান্টি নেই ;"
toList()
একটি আসছে না ArrayList
বা List
- এটি একটি ফিরে আসছে Collector
যা অবশেষে তৈরি এবং ফিরে আসবে, একটি List
- এছাড়াও ডকুমেন্টেশন রাজ্যের: "... কোন গ্যারান্টী আছে টাইপ , পরিবর্তনশীলতা, serializability, অথবা তালিকা থ্রেড-নিরাপত্তা ফিরে; যদি প্রত্যাশিত তালিকার আরও নিয়ন্ত্রণের প্রয়োজন হয়, সারণি (সরবরাহকারী) ব্যবহার করুন .... "
R
ফলাফল ফলাফলের জেনেরিক ধরণ।A
মধ্যকার সংগ্রহের জেনেরিক ধরণের সংগ্রহকারের ধরণ। এটি হ'ল কোনও সংগ্রাহক কীভাবে কাজ করে তার বিশদকরণ divide