में ऑब्जेक्ट्स पर अलग-अलग बराबर (भौतिक बराबर और तार्किक बराबर) रखने के लिए एक तंत्र क्या तुलनात्मक की तरह कोई तुल्यकारक तंत्र है, इसलिए सूचियों की प्रतिलिपि बनाने के लिए मेरे पास अलग-अलग बराबर हो सकते हैं?संग्रह
संपादित करें: मेरा लक्ष्य वर्तमान list1.equals (List2) जो की जाँच करता है के बीच अंतर करने के लिए है अगर इसकी एक उथले प्रतिलिपि या भी सभी वस्तुओं a.equals के साथ एक गहरी प्रतिलिपि (ख) और list1.identical (List2) जो जांचता है कि अगर इसकी अनमोल लिस्टिंग
के साथ इसकी बस उथली प्रतिलिपि है तो ये सभी सूचियां एक ही मॉडल से हैं। कुछ स्वयं की प्रतियां हैं, इसलिए वे पॉइंटर को एक ही ऑब्जेक्ट में रखते हैं, और अन्य गहरी प्रतियां हैं, इसलिए पदानुक्रम पूरी तरह से दोहराया जाता है, क्योंकि उनके पास संरचना में न केवल संरचना में अद्यतन होते हैं।
मुझे खुद को अक्सर makin list1.equals (list2) मिलती है, लेकिन मुझे यह बताने के लिए एक तंत्र की आवश्यकता है कि क्या दोनों कुल प्रतियां हैं (संग्रह के लिए एक ही क्रम में समान वस्तुएं) या कभी-कभी यदि वे भौतिक प्रतियां हैं (मेरे अपने कार्यान्वित तर्क के बराबर), तो सूची बराबर कॉल करेगी और ऑब्जेक्ट्स को == बी से कुछ और लागू करना चाहिए।
मेरे समस्या नहीं Equalator इंटरफेस है, और अगर मैं वस्तुओं को ओवरराइड मैं ढीला कुल बराबर (एक == ख)
उदाहरण के लिए द्वारा की तुलना करने की क्षमता के लिए, यह अच्छा होगा के बराबर होती है है;
Collections.equal(l1,l2,new Equalator(){
@Override public boolean equals(Obj1,Obj2){
//Default lists comparison plus commparison of objects based on
return (obj1.propertyX() == obj2.propertyX());
}
});
और अभी भी मैं कर सकता list1.equals (List2) तो वे डिफ़ॉल्ट बराबर का उपयोग करें (obj1 == obj2) और यह केवल सच हो सकता है अगर निहित वस्तुओं बिल्कुल वैसा ही कर रहे हैं।
पहला ऑपरेशन यह जांचने के लिए उपयोगी है कि सूची (जो मॉडल से पूरी तरह से पुनर्निर्मित वस्तुओं के साथ एक अद्यतन सूची हो सकती है) अभी भी पुरानी सूची के बराबर है।
दूसरा ऑपरेशन यह जांचने के लिए उपयोगी है कि सूची (जो डेटा मॉडल के पुराने वर्तमान संस्करण की उथली प्रतिलिपि थी) की जांच के लिए उपयोगी है, इसमें कोड के अंदर इसे स्थानांतरित करने से कोई असाधारण परिवर्तन नहीं होता है जब यह udpdated संस्करण था।
संपादित करें: एक बहुत अच्छा उदाहरण प्वाइंट (एक्स, वाई) की एक सूची होगी। हमें यह जानने में सक्षम होना चाहिए कि दोनों सूची बराबर हैं क्योंकि वे अंक या बराबर के समान सेट हैं क्योंकि उनके द्वारा बनाए गए बिंदु तार्किक तरीके से बराबर हैं। यदि हम वस्तु के लिए phyEqual और logEqual दोनों को कार्यान्वित कर सकते हैं, और किसी भी ऑब्जेक्ट में दोनों विधियों को सूचीबद्ध कर सकते हैं तो list.phyEqual (list2) या list1.logEqual (list2)
आपके पास बहुत सारे संदर्भ हैं, लेकिन आपका वास्तविक * प्रश्न * यहां क्या है? –
पहली पंक्ति। तब मैं अपनी समस्या को परिभाषित करता हूं। क्षमा करें, मैंने 'वहां है' के बजाय 'वहां नहीं है' के साथ शुरू किया और मुझे लगता है कि यही कारण है कि इसकी उलझन में – Whimusical