Access ordered LinkedHashMap not preserved following deserialisation.

Đang mở
#3,965 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@EthCas đang làm issue này rồi.

Từ ngày 18/10/2026.

  • #4188 của @EthCas — đang mở

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
68/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu bằng cách chạy bản tái hiện Java tối thiểu với Fory.builder().withLanguage(Language.JAVA), sau đó lần theo đường dẫn tuần tự hóa và giải tuần tự của LinkedHashMap. Được xem là hoàn tất khi một LinkedHashMap được giải tuần tự, có thứ tự theo lần truy cập, thay đổi thứ tự lặp giống hệt sau cùng các lệnh gọi get, để assertion cuối cùng vượt qua.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug
Search before asking
  • I had searched in the issues and found no similar issues.
Version

A serialised LinkedHashMap that was constructed to use access order (as opposed to insertion order), will lose this characteristic following deserialisation.

Component(s)

Java

Minimal reproduce step
Fory fory = Fory.builder().withLanguage(Language.JAVA).build();
LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>(16, 0.75, true);
map.put(1, 1);
map.put(2, ");
map.put(3, 3);
map.put(4, 4);
LinkedHashMap<Integer, Integer> deserialised = (LinkedHashMap<Integer, Integer>) fory.deserialize(fory.serialize(map));

// This passes, as expected
assertEquals(map, deserialised);

// Modify access order
assertEquals(2, map.get(2));
assertEquals(4, map.get(4));
assertEquals(1, map.get(1));
assertEquals(3, map.get(3));

assertEquals(2, deserialised.get(2));
assertEquals(4, deserialised.get(4));
assertEquals(1, deserialised.get(1));
assertEquals(3, deserialised.get(3));

// This fails, since access order was not preserved
assertEquals(deserialised.values().iterator().next(), map.values().iterator().next());
What did you expect to see?

The last assertion should have succeeded (as it would when following Java serialization).

What did you see instead?

The last assertion fails.

Anything Else?

No response

Are you willing to submit a PR?
  • I'm willing to submit a PR!
Ngôn ngữ chính
Java
Star
4.6k
Fork
470
Merge trung bình
9 giờ 28 phút
Pull request đã merge (30 ngày)
33

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/fory

Tất cả issue của apache/fory

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.