আমার কিছুটা আলাদা সমস্যা ছিল ForEach- এ স্থানীয় ভেরিয়েবলকে বাড়ানোর পরিবর্তে, আমাকে স্থানীয় ভেরিয়েবলের জন্য একটি বিষয় বরাদ্দ করতে হবে।
আমি এটি একটি ব্যক্তিগত অভ্যন্তরীণ ডোমেন শ্রেণীর সংজ্ঞা দিয়ে সমাধান করেছি যা আমি তালিকা (পুনরুত্থান) করতে চাইছি এবং দেশটি তালিকা (ফাউন্ডকাউন্ট্রি) থেকে প্রাপ্ত প্রত্যাশা আউটপুট উভয়কেই আবৃত করে। তারপরে জাভা 8 "ফরএচ" ব্যবহার করে, আমি তালিকার ক্ষেত্রটি দিয়ে পুনরাবৃত্তি করি এবং যখন আমার পছন্দসই বস্তুটি পাওয়া যায়, তখন আমি সেই বস্তুকে আউটপুট ক্ষেত্রে বরাদ্দ করি। সুতরাং এটি স্থানীয় ভেরিয়েবলের ক্ষেত্রে একটি মান নির্ধারণ করে, স্থানীয় ভেরিয়েবলটি নিজেই পরিবর্তন করে না। আমি বিশ্বাস করি যেহেতু স্থানীয় ভেরিয়েবল নিজেই পরিবর্তন হয় নি, সংকলকটি অভিযোগ করে না। আমি তখন মানটির বাইরে থাকা আউটপুট ক্ষেত্রে, তালিকার বাইরে ব্যবহার করতে পারি।
ডোমেন অবজেক্ট:
public class Country {
private int id;
private String countryName;
public Country(int id, String countryName){
this.id = id;
this.countryName = countryName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
}
মোড়ানো বস্তু:
private class CountryFound{
private final List<Country> countryList;
private Country foundCountry;
public CountryFound(List<Country> countryList, Country foundCountry){
this.countryList = countryList;
this.foundCountry = foundCountry;
}
public List<Country> getCountryList() {
return countryList;
}
public void setCountryList(List<Country> countryList) {
this.countryList = countryList;
}
public Country getFoundCountry() {
return foundCountry;
}
public void setFoundCountry(Country foundCountry) {
this.foundCountry = foundCountry;
}
}
Iterate অপারেশন:
int id = 5;
CountryFound countryFound = new CountryFound(countryList, null);
countryFound.getCountryList().forEach(c -> {
if(c.getId() == id){
countryFound.setFoundCountry(c);
}
});
System.out.println("Country found: " + countryFound.getFoundCountry().getCountryName());
আপনি মোড়কের ক্লাসের পদ্ধতি "সেটকাউন্ট্রিলিস্ট ()" মুছে ফেলতে এবং ফিল্ডটিকে "কান্ট্রিলিস্ট" চূড়ান্ত করে তুলতে পারেন, তবে এই বিবরণটি যেমন রয়েছে তেমন সংকলন ত্রুটি আমি পাইনি।