मानचित्र के किसी मूल्य पर फ़ंक्शन निष्पादित कैसे कर सकता है, यदि यह मौजूद है, तो मानचित्र में कोई परिवर्तन किए बिना? मैं इसे 'जावा 8' घोषणात्मक शैली का उपयोग करके करना चाहता हूं, जो Optional.ifPresent()
के बराबर है।मानचित्र ifPresent फ़ंक्शन
मेरे उपयोग के मामले इस प्रकार है:
मैं प्राप्त भाग में वस्तुओं के लिए अद्यतन (नई या हटाए गए), मैं अपने माता पिता के साथ इन अपडेट पंजीकृत करना चाहते हैं।
Map<ParentId, Parent> parents = ...
एक नए बच्चे मैं क्या निम्नलिखित प्राप्त जब:
parents.computeIfAbsent(child.getParentId(), k -> new Parent()).addChild(child));
हालांकि मैं कथात्मक समारोह नहीं मिल सकता है दूर करने के लिए
बहीखाता के लिए मैं निम्नलिखित है। सीधे आगे मैं के रूप में इस लागू करना होगा:
if(parents.containsKey(child.getParentId())
{
parents.get(child.getParentId()).removeChild(child);
}
या मैं एक Optional
में मूल्य लपेट सकता है:
Optional.ofNullable(parents.get(child.getParentId()).ifPresent(p -> p.removeChild(child));
ध्यान दें कि जनक एक सरल सूची नहीं है, यह सिर्फ बच्चों की तुलना में अधिक होता है। तो निम्नलिखित काम नहीं करता है (क्योंकि removeChild()
वापस नहीं करता है एक Parent
):
parents.computeIfPresent(child.getParentId(), (k, v) -> v.removeChild());
मैं यह कैसे कर सकते हैं, या वहाँ Optional.ifPresent()
करने के लिए कोई समकक्ष है?
वे वैकल्पिक साथ जिस तरह से शायद सबसे आसान दृष्टिकोण और साफ मैं है – Lino
के बारे में सोच सकते हैं क्या होता है जब माता-पिता किसी बच्चे के साथ समाप्त होता है? क्या आपको उस माता-पिता को मानचित्र से भी हटाने की ज़रूरत है, या यह ठीक है अगर माता-पिता के साथ कोई बच्चा नहीं रहता है? –
@FedericoPeraltaSchaffner इस उदाहरण के लिए कुछ भी नहीं (मेरे मामले में, क्योंकि वहां भी अन्य डेटा है जिसे सहेजा जाना चाहिए)। – Thirler