Tôi muốn sử dụng danh sách được liên kết để thực hiện trích xuất và chèn các yếu tố, thử tất cả các kết hợp cho một phỏng đoán. Danh sách được liên kết hiệu quả hơn đối với loại hoạt động này. Vì tôi muốn thử tất cả các cặp trích xuất/chèn có thể, tôi đã sử dụng hai trình lặp khác nhau trong danh sách. Điều này làm tăng "ConcurrentModificationException". Làm thế nào tôi có thể thực hiện hoạt động này một cách hiệu quả, mà không phải duyệt lại danh sách mỗi lần, vì điều này sẽ đánh bại toàn bộ mục đích của việc sử dụng danh sách ở nơi đầu tiên?Làm thế nào để sử dụng hai trình lặp khác nhau trên một Danh sách Liên kết trong Java?
Dưới đây là phần có liên quan của mã:
ListIterator<Integer> it1 = data.listIterator();
ListIterator<Integer> it2;
while(it1.hasNext()) {
int i = it1.next();
it2 = data.listIterator();
while(it2.hasNext()) {
if (i == it2.next()) continue; // continue right away when the indexes are equal
it1.remove();
it2.add(i);
if (length() < best)
return true;
}
// when the swap is not better/consistent
it2.remove();
it1.add(i);
}
return false;
Cảm ơn
Nếu bạn thay đổi danh sách thông qua một trình lặp, bạn không thể sử dụng bất kỳ trình lặp nào khác. –
Bạn có thể sử dụng ConcurrentLinkedQueue thay vì không nhận được CME không? Tôi nghi ngờ có cách hiệu quả hơn để làm bất cứ điều gì bạn đang làm trong mọi trường hợp. –
Vui lòng google như vậy: www.google.com/search?q=multi+dimensional+linked+list+java và kiểm tra kết quả như http://www.dreamincode.net/forums/topic/282327-multi-dimensional-linked -list/ –