मैं Map<Double, Double>
में डबल्स की एक सूची स्ट्रीम करने की कोशिश कर रहा हूं, जहां कुंजी मूल सूची में डबल्स हैं, और मान कुछ गणना मूल्य हैं। - यह एक चक्रीय निष्कर्ष के बारे में शिकायत हैमैं लैम्बडा पैरामीटर को प्रयोग करने योग्य वस्तुओं में कैसे परिवर्तित करूं?
// "values" is a List<Double> that was passed in
ImmutableMap<Double, Double> valueMap = values.parallelStream()
.collect(Collectors.toMap(p -> p, p -> doThing(values, p)));
private Double doThing(List<Double>, Double p) {
Double computedValue = 0.0;
// Do math here with p
return computedValue;
}
हालांकि, इंटेलीजे शिकायत कर रहा है कि p -> p
एक वैध लैम्ब्डा अभिव्यक्ति नहीं है:
इस तरह मेरे कोड दिखता है। मुझे doThing
पर कॉल करने में त्रुटि भी मिल रही है, क्योंकि p
एक लैम्ब्डा पैरामीटर है और डबल नहीं है।
जब मैं p
को पर doThing
पर कॉल करने का प्रयास करता हूं, तो वह कास्ट करने में विफल रहता है।
क्या मुझे कुछ वास्तव में स्पष्ट याद आ रही है? ऐसा लगता है कि वास्तव में मेरे लैम्ब्डा पैरामीटर के साथ कुछ भी करने का कोई तरीका नहीं है ...
आप टाइपो के बारे में सही हैं, इसके बारे में खेद है। ऐसा लगता है कि एक इम्यूटेबल मैप के बजाय इसे मानचित्र में बदलना समस्या को हल करता है। क्या आप जानते हैं कि मैंने जो त्रुटियां देखीं, वे असंबद्ध क्यों थे? इस तरह की एक त्रुटि के लिए, मुझे .collect() और घोषित प्रकार के वैल्यूमैप के रिटर्न वैल्यू के बीच एक प्रकार की मिस्चैच त्रुटि जैसी कुछ अपेक्षा की जाती। क्यों दुनिया में एक घोषित प्रकार विसंगति चक्रवात अनुमान त्रुटि का कारण होगा ...? – sichinumi
@ सिचिनुमी मैंने ग्रहण के साथ इसे आजमाया और _Type विसंगति प्राप्त की: मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट> से इम्यूटेबल मैप <डबल, डबल> _ में कनवर्ट नहीं किया जा सकता। तो आपको मिली त्रुटि वास्तव में थोड़ा अजीब है। – Bubletan
अफैइक, इंटेलिजे नेटबीन्स की तरह 'जावैक' का उपयोग करता है, इसलिए मैं पुष्टि कर सकता हूं कि जेनरिक/टाइप इनफरेंस या लैम्ब्डा एक्सप्रेशन से जुड़े त्रुटि संदेश वास्तविक समस्या से भ्रमित और दूर हो सकते हैं। कभी-कभी, केवल एक भूल गया '),'> 'या'; 'बहुत बेतुका, अनुपयोगी त्रुटि संदेश का कारण बन सकता है। – Holger