7
มีวิธีปฏิบัติสำหรับโครงสร้างโหนดที่เชื่อมโยงที่จะไม่เปลี่ยนรูป?
ฉันตัดสินใจเขียนรายการที่ลิงก์เดี่ยว ๆ และมีแผนที่จะทำให้โครงสร้างโหนดเชื่อมโยงภายในไม่เปลี่ยนรูป ฉันวิ่งเข้าไปในอุปสรรค์ ว่าฉันมีโหนดเชื่อมโยงต่อไปนี้ (จากaddการดำเนินการก่อนหน้า): 1 -> 2 -> 3 -> 4 5และบอกว่าผมต้องการที่จะผนวก การทำเช่นนี้ตั้งแต่โหนด4จะไม่เปลี่ยนรูปฉันต้องสร้างสำเนาใหม่ของ4แต่แทนที่ของสนามใหม่ที่มีโหนดnext 5ปัญหาคือตอนนี้3กำลังอ้างอิงเก่า4; 5หนึ่งโดยไม่ต้องต่อท้าย ตอนนี้ฉันต้องการคัดลอก3และแทนที่nextฟิลด์เพื่ออ้างอิง4สำเนา แต่ตอนนี้2กำลังอ้างอิงเก่า3... หรือกล่าวอีกนัยหนึ่งเมื่อต้องการต่อท้ายรายการทั้งหมดจะต้องคัดลอก คำถามของฉัน: ความคิดของฉันถูกต้องหรือไม่ มีวิธีการผนวกโดยไม่คัดลอกโครงสร้างทั้งหมดหรือไม่ เห็นได้ชัดว่า "จาวาที่มีประสิทธิภาพ" มีคำแนะนำ: คลาสควรจะไม่เปลี่ยนรูปเว้นแต่จะมีเหตุผลที่ดีมากที่ทำให้พวกเขาเปลี่ยนแปลงได้ ... นี่เป็นกรณีที่ดีสำหรับการเปลี่ยนแปลงหรือไม่? ฉันไม่คิดว่านี่เป็นคำตอบที่ซ้ำกันเนื่องจากฉันไม่ได้พูดถึงรายการ เห็นได้ชัดว่าจะต้องมีการเปลี่ยนแปลงเพื่อให้สอดคล้องกับอินเทอร์เฟซ (โดยไม่ต้องทำอะไรบางอย่างเช่นการรักษารายการใหม่ภายในและดึงมันออกมาผ่านทะเยอทะยานในความคิดที่สองแม้ว่าแม้จะต้องมีการกลายพันธุ์; ฉันกำลังพูดถึงว่า internals ของรายการจะต้องไม่เปลี่ยนรูป