Khi sử dụng Java LinkedList làm thế nào để bạn tìm ra mối quan hệ tiếp theo hoặc trước đó của phần tử?Danh sách liên kết Java Util - cách tìm kiếm tiếp theo?
Ý tôi là, trong một danh sách liên kết thường xuyên tôi sẽ làm một cái gì đó như thế này:
Node node1 = new Node();
Node node2 = new Node();
LinkedList list = new LinkedList();
list.add(node1);
list.add(node2);
//then my node1 will know who it's next is:
assertEquals(node2, node1.next());
nơi Node là thùng chứa của riêng mình cho dữ liệu/đối tượng.
Nhưng trong Danh sách liên kết của Java, dữ liệu dường như không bị sửa đổi. Vì vậy, làm thế nào để tôi thực sự tìm ra những người "tiếp theo" (hoặc "trước đó" trong trường hợp của các danh sách liên kết gấp đôi) là?
Điều gì sẽ xảy ra nếu tôi đến 'list.add (node1); list.add (node1); '? –
LinkedList của Java là một chút sai lầm gây nhầm lẫn cho những người đã học về "danh sách liên kết". Nó không phải là chỉ gây hiểu nhầm hoặc, ít nhất, điều được đặt tên kém trong Java ("ngoại lệ sửa đổi đồng thời" đến tâm trí quá). Nhưng tất nhiên bạn có thể mong đợi những người uống Java-kool'aid tin rằng mọi thứ mà các vị thần Java tạo ra là hoàn hảo để giải thích tại sao LinkedList thực sự là một danh sách liên kết compi sci và tại sao tôi ngu ngốc và tất cả;) – SyntaxT3rr0r
Có một rất nhiều điều tồi tệ và khủng khiếp trong Java, nhưng cả LinkedList và CME đều khá ổn. Trừ khi bạn muốn đặt tên nó như ListImplementedAsDoubleLinkedList và YouOrSomebodyElseHadModifiedYourCollectionInTheMeantime, tôi không biết đặt tên nó như thế nào. Điều đó nói rằng, tôi đồng ý rằng một cái tên tốt hơn sẽ tốt đẹp, tôi không thể tìm thấy bất kỳ cái gì. – maaartinus