আমি আপনাকে প্রথমে পুরো ছবিতে জাভা 8 বোঝার চেষ্টা করার পরামর্শ দিচ্ছি, আপনার ক্ষেত্রে এটি সবচেয়ে গুরুত্বপূর্ণ বিষয় স্ট্রিম, ল্যাম্বডাস এবং পদ্ধতির উল্লেখ।
আপনার লাইন বাই লাইনের ভিত্তিতে বিদ্যমান কোডটি কখনই জাভা 8 কোডে রূপান্তর করা উচিত নয় , আপনার বৈশিষ্ট্যগুলি নিষ্কাশন করা উচিত এবং সেগুলি রূপান্তর করা উচিত।
আপনার প্রথম ক্ষেত্রে আমি যা চিহ্নিত করেছি তা হ'ল:
- আপনি যদি কোনও ইনপুট কাঠামোর উপাদানগুলিকে কোনও আউটপুট তালিকায় যোগ করতে চান তবে তারা কিছু প্রাক্কলকের সাথে মেলে।
আসুন দেখুন আমরা কীভাবে এটি করি, আমরা নিম্নলিখিতটি দিয়ে এটি করতে পারি:
List<Player> playersOfTeam = players.stream()
.filter(player -> player.getTeam().equals(teamName))
.collect(Collectors.toList());
আপনি এখানে কি করছেন:
- আপনার ইনপুট কাঠামোটিকে একটি স্ট্রিমে পরিণত করুন (আমি এখানে ধরে নিচ্ছি যে এটি টাইপযুক্ত
Collection<Player>
, এখন আপনার একটি রয়েছে Stream<Player>
।
- একটি দিয়ে সমস্ত অযাচিত উপাদানগুলিকে ফিল্টার করুন
Predicate<Player>
, প্রতিটি খেলোয়াড়কে বুলিয়ানকে ম্যাপিং করে সত্য রাখতে চাইলে এটি রাখা উচিত।
- এর মাধ্যমে ফলাফলের উপাদানগুলিকে একটি তালিকায় সংগ্রহ করুন, এ এর মাধ্যমে
Collector
আমরা এখানে স্ট্যান্ডার্ড লাইব্রেরি সংগ্রহকারীদের মধ্যে একটি ব্যবহার করতে পারি, যা Collectors.toList()
।
এটি আরও দুটি পয়েন্ট অন্তর্ভুক্ত করে:
- ইন্টারফেসের বিরুদ্ধে কোড, তাই
List<E>
ওভার বিরুদ্ধে কোড ArrayList<E>
।
- টাইপ প্যারামিটারের জন্য হীরা সূচনা ব্যবহার করুন
new ArrayList<>()
, আপনি সর্বোপরি জাভা 8 ব্যবহার করছেন।
এখন আপনার দ্বিতীয় পয়েন্ট:
আপনি আবার বৃহত্তর ছবিটির দিকে না তাকিয়ে জাভাস্ত্রের উত্তরাধিকারের কিছু জাভাতে রূপান্তর করতে চান। এই অংশটি ইতিমধ্যে @ ইয়ান রবার্টস দ্বারা জবাব দেওয়া হয়েছে , যদিও আমি মনে করি যে players.stream().filter(...)...
তিনি তাঁর পরামর্শ অনুসারে আপনার কাজ করা উচিত।