如果我有一個Java字符串[s1,s2,s3,s4, ...., sn]
的字典排序列表,然後將每個字符串轉換爲一個字節數組,使用UTF-8編碼bx = sx.getBytes("UTF-8")
,是字節數組的列表[b1,b2,b3,...bn]
也是按字典排序的?Java String.getBytes(「UTF-8」)是否保留lexicograhpical順序?
回答
是的。根據RFC 3239:
UTF-8字符串的字節值字典分類順序是 一樣的,如果通過字符數目排序。當然這是 有限的興趣,因爲基於字符數字的排序順序是 幾乎從來沒有文化上的有效。
正如伊恩·羅伯茨指出,這適用於 「真正 UTF-8(如String.getBytes
給你)」,但要注意的DataInputStream
's fake UTF-8,這將排序[U + 000000]後,[U + 000001 ]和[U + 10FFFF]之後的[U + 00F000]。
爲了完整性,請注意這對於_true_ UTF-8是正確的(比如'String.getBytes'會給你),但對於「DataInputStream」使用的「[修改的UTF-8](http://docs.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8)」和朋友。 – 2012-08-16 00:17:52
@IanRoberts:對。事實上,在[U + 10FFFF]之後的[U + 000001]和[U + 00F000]之後,修改的UTF-8排序[U + 000000]。 – 2012-08-16 00:31:25
您確定這個回答正確嗎?對於基於UTF-16而非Unicode代碼點的字符串,不是正常的Java字典順序? – 2013-10-14 06:20:24
您在給定的orden中獲得對象X的列表/數組。
您可以使用一種方法創建這些對象的新列表/數組Y. Y將具有您創建它的順序(通常您將保留X順序)。沒有重新排序。
此外,對字節[]的詞法排序沒有意義。
字節[]的字典排序並不意味着無意義。見例如http://stackoverflow.com/questions/5108091/java-comparator-for-byte-array-lexicographic – Carsten 2012-08-15 23:34:00
- 1. IOrderedEnumerable.Select()是否保留元素順序?
- 2. Java設置保留順序?
- 3. Java Collections.unmodifiableCollection是否保留底層集合的順序?
- 4. PLINQ是否按順序保留原始順序?
- 5. 保留屬性順序的java xml庫
- 6. Spark的RDD.combineByKey()是否保留先前排序的DataFrame的順序?
- 7. LIMIT是否在SQLITE中保留排序順序?
- 8. 保留註釋的順序
- 9. Elasticsearch是否保留多值字段的順序?
- 10. 腳本異步標記是否保留腳本執行順序?
- 11. Python:迭代元組時,順序是否保留?
- 12. 在LINQ中,IOrderedEnumerable <T>的投影是否保留順序?
- 13. 在RethinkDB中,`group`是否保留原始流的順序?
- 14. Linq to Objects:GroupBy是否保留元素的順序?
- 15. 來自LinkedHashMap的集合(值)是否保留了插入順序?
- 16. Hibernate HQL Select是否保留表的順序?
- 17. unordered_set :: erase(pos)是否保留了元素的順序?
- 18. couchDB reduce:rereduce是否保留map的結果順序?
- 19. 保留哈希表順序
- 20. Seq.groupBy:保留原始順序
- 21. ActiveRecord.find(array_of_ids),保留順序
- 22. OrderedDict不保留順序
- 23. 保留數組的順序
- 24. ,保留插入順序
- 25. java String.getBytes行爲
- 26. Java String.getBytes()問題
- 27. 保留SOAP結果的排序順序
- 28. String.getBytes()的結果是否包含零?
- 29. groovy - xml - 保留屬性順序
- 30. 使用json.net進行反序列化時,數組順序是否保留?
因爲UTF-8是一個可變寬度編碼,我會說排序順序不會被保留 – 2012-08-15 23:11:39
我不確定你的問題是否有意義;你會如何按字典順序排列比特/字節?您將這些位/字節映射到的字符集是決定性因素。 – 2012-08-15 23:14:13
@Brian Roach字節數組上的字典順序與字符串上的字典順序相似。只需將「x處的字符」替換爲「x處的字節」。見例如http://stackoverflow.com/questions/5108091/java-comparator-for-byte-array-lexicographic – Carsten 2012-08-15 23:32:51