2017-03-11 15 views
0

This이 개정 개체의 검사입니다 복제 한 후, 서버 데이터베이스 (Cloudant)의 필드의 순서를 유지하지 , 동일한 문서를 검색하면 this이됩니다.저장 개정은 순서 LinkedHashMap로, 그러나 제대로 저장 한 후</p> <p>를 주문한의 LinkedHashMap으로,

'retrieved'개체의 'body'필드가 올바르게 정렬 된 것처럼 보입니다. 하지만지도로 가져 오면지도가 무작위로 표시됩니다.

이것은별로 중요하지 않지만 복제 후 문서가 서버에서 응용 프로그램에서 검색 한 무질서한 순서와 동일한 순서로 저장된다는 사실을 알았습니다.

문서를 읽기 쉽게 읽을 수 있도록 서버에 올바르게 표시하고 싶습니다. 가능합니까?

Android 6.0에서 코드를 실행하고 있는데,이 문제는 다음 링크와 관련이있을 수 있습니다. LinkedHashMap entrySet's order not being preserved in a stream (Android)

도움 주셔서 감사합니다.

답변

0

문서 개체에 asMap 메서드를 사용하면 Android 동기화는 얕은 복사본 해시 맵을 만듭니다 (here 참조). 따라서 로컬 개정판에서 검색 한 맵은 정렬되지 않습니다.

이 코드를 본 이래로 깊이가 깊어서 오랜 시간이 걸렸으므로 asMap은 JSON을 업로드하는 데 사용됩니다. 즉, 정렬되지 않은지도는 Couch/Cloudant에 업로드 된 JSON을 만듭니다. (here을 보라. 솔직히이 코드는 꽤 유용한 코드 경로를 따라 간 후 깊은 곳이다.)

Java HashMaps의 순서는 삽입 순서에 따라 달라 지므로 로컬 문서 객체의 결과가 서버의 순서와 같은 이유가 설명됩니다.

+0

그건 제가 두려웠 던 것입니다. 복제 프로세스 중에 asMap 메서드가 사용되었습니다. 지금 당장 서버에서 주문을 포기할 것입니다. 해결 방법을 찾으면 여기에 게시 할 것입니다. 감사합니다. –