Làm cách nào để sao chép sâu một véc tơ trong J2ME/BlackBerry?Tôi sẽ sao chép sâu một vector trong J2ME/BlackBerry như thế nào?
Trả lời
Thật không may, không có cách nào đáng tin cậy để tạo bản sao sâu trên Vector đối tượng.
Chỉ cần đánh giá nhanh những gì tôi tin rằng "bản sao sâu" là: Bản sao sâu là bản sao không chỉ nội dung của bộ sưu tập (vectơ, trong trường hợp này) được sao chép, mà các đối tượng trong Vector được sao chép độc lập. Nói cách khác: Nếu vectơ V chứa A và bản sao (V ') của V được tạo, bản sao A (A') trong V 'không bị ảnh hưởng bởi bất kỳ thay đổi nào đối với A và ngược lại.
Thông thường, điều này sẽ được thực hiện bằng cách "nhân bản" một đối tượng. Thật không may, nếu bạn không có quyền kiểm soát đối tượng trong Vector, bạn không có cách nào hợp lý để sao chép chúng, đặc biệt là vì JavaME không sở hữu một giao diện Cloneable (theo như tôi có thể tìm thấy). Tất nhiên, nếu bạn điều khiển các đối tượng, bạn có thể tạo giao diện Cloneable của riêng bạn để chỉ định phương thức clone() trả về một bản sao hoàn toàn độc lập của đối tượng. Quay lại đầu trang | Sau đó, bạn phải đảm bảo rằng Vector nhân bản đặc biệt của bạn chỉ chấp nhận các đối tượng thực hiện giao diện đó. Từ đó, nó khá dễ dàng (mã khôn ngoan) để bạn có thể tạo ra một Vector có thể sao chép chính nó.
Bạn sẽ cần sao chép nội dung của Vector bằng một vòng lặp.
Enumeration e = projects.elements();
while (e.hasMoreElements()) {
this.projects.addElement((Project) e.nextElement());
}
Cần thêm thông tin, xem The Java Forum trang 2 trả lời 18, câu trả lời là có.
Bản sao nông của mỗi phần tử. –
@DanG nó là tốt nhất bạn có thể nhận được trong J2ME, Bạn thậm chí có bận tâm đọc các tài liệu Vector? http://en.wikipedia.org/wiki/Object_copy#Deep_vs._Shallow_vs._Lazy_copy nếu tôi đọc chính xác mã tôi đã đưa ra là một bản sao sâu, vì hai véc tơ là độc lập. –
bản sao chép sâu đầy đủ sẽ tạo bản sao của từng phần tử con và mỗi phần tử con phụ, v.v ... xuống cây. Tại một điểm không nên tham chiếu đối tượng; luôn là bản sao của mỗi trường. Vì bạn đang sao chép các tham chiếu đối tượng của các phần tử, đây là một bản sao nông ở cấp đó. –
Vì bạn đã gắn thẻ này là BlackBerry chứ không chỉ J2ME nên được đề cập rằng có một lớp CloneableVector là một phần của các API BlackBerry. Nếu bạn đang cố gắng để dính vào J2ME nghiêm ngặt này sẽ được sử dụng ít. Tuy nhiên, nếu bạn chỉ nhắm mục tiêu BlackBerry, thì nó đáp ứng nhu cầu của bạn.
Đây chỉ là phiên bản 5.0. Hiện không có nhiều thiết bị trên 5.0. –
Điều đó không đúng, ít nhất là 4,6 và tôi không cảm thấy muốn nhìn lại để kiểm tra khi nó xuất hiện lần đầu tiên. Tôi chỉ tình cờ trỏ đến tài liệu 5.0. – Fostah
Tôi làm việc ở 4.3 ... –
- 1. Làm thế nào để sao chép sâu một cây?
- 2. Sao chép constructor: sâu sao chép một lớp trừu tượng
- 3. Sao chép sâu trong C#
- 4. Sao chép danh sách trong python: sâu vs nông bản sao: gotcha cho tôi trong python?
- 5. Sao chép mảng sâu trong Fortran
- 6. Tôi nên sao chép Strings bằng Java như thế nào?
- 7. Javascript đối tượng sao chép sâu
- 8. bản sao sâu vs Sao chép Shallow
- 9. Trong python làm thế nào tôi sẽ làm một bản sao sâu của một dict đến một chiều sâu cụ thể?
- 10. std vector C++ - bản sao sâu hoặc nông
- 11. Python: sao chép sâu cây nút ast
- 12. Perl: Làm thế nào để sao chép sâu một đối tượng may mắn?
- 13. Sao chép một mảng thành một std :: vector
- 14. Làm cách nào để sao chép một đối tượng (bản sao sâu) trong Dart?
- 15. Bạn sẽ cải thiện lớp sao chép nông này như thế nào?
- 16. Làm thế nào để sao chép các đối tượng liên kết sâu trong C#?
- 17. Sao chép sâu các nút xem cây
- 18. Viết bản sao sâu - sao chép giá trị con trỏ
- 19. Khi nào một vector được sao chép, khi nào một tham chiếu được truyền?
- 20. C++ cách sao chép bản đồ vào một vector
- 21. Làm thế nào để sao chép sâu QMap và các thùng chứa Qt khác
- 22. omu.valueinjecter bản sao sâu không giống như các loại
- 23. Tôi có thể sao chép các phần tử 'vector' trong 'bộ' bằng thuật toán sao chép không?
- 24. Làm thế nào để std :: constructor sao chép của vector hoạt động?
- 25. Bản sao chép sâu() của ByteBuffer của Java
- 26. Làm thế nào để tăng :: ptr_vector sâu sao chép các đối tượng cơ bản?
- 27. Cách tốt nhất để sao chép sâu một băm băm trong Perl là gì?
- 28. Làm thế nào để bạn sao chép một cái gì đó như hàm() {...} .property() trong javascript như trong Ember.js?
- 29. TIME_TICK sẽ phát trong giấc ngủ sâu?
- 30. Trong Squirrel, làm thế nào tôi có thể sao chép một hàng?
Than ôi, đó là điều tôi sợ. Cảm ơn. –
Tôi có thể thực hiện một giao diện clonable, nhưng nó sẽ không được gần như nhanh như một cái gì đó bản địa để J2ME. –