java - 如何在Java 8中使用UTF-8字节的键打印trie的键

标签 java utf-8

我有一个字典树,其中的键是 UTF-8 字节序列。 我想打印所有键,或将它们全部转换为字符串。 我递归地遍历 trie,添加或删除 ArrayList 中的字节。

  1. 我应该使用 ArrayList 以外的其他东西吗?我希望它高效。字节缓冲区?

  2. 如果我使用 ArrayList,如何将其转换回字符串?

最佳答案

1) 最有效的可能是足够大的 byte[]它可以容纳最长的键,因此您无需调整其大小。 ArrayList<Byte>非常糟糕,因为有很多盒装Byte s。 ByteBuffer有效,但与原始 byte[] 相比并没有提供太多好处。一个StringBuilder也可以工作,但我不知道从其中删除字节的效果如何。

2) System.out.println(new String(bytes, 0, len, StandardCharsets.UTF_8))哪里byte[] bytes是字节数组并且 len是您需要多少字节。

如果您确实想使用ArrayList<Byte>你可以像这样转换

ArrayList<Byte> byteList = ...
byte[] bytes = new byte[byteList.size()];
for (int i = 0; i < byteList.size(); i++)
    bytes[i] = byteList.get(i);
System.out.println(new String(bytes, StandardCharsets.UTF_8));

关于java - 如何在Java 8中使用UTF-8字节的键打印trie的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232413/

相关文章:

java - 如何将逗号分隔的字符串转换为 Core Java 中的 T 列表

java - 类与 JPA 的关系

python - 将带有俄语字符的 numpy.ndarray 写入文件

带有 POST 编码问题的 C# Web 请求

ios - 将转义的 unicode char[] 转换为 NSString

python - 在 Python 3 中,如何从字符串中删除所有非 UTF8 字符?

c++ - utf8 识别 strncpy

java - 在 JSP 中确认框调用后处理 servlet 调用时出现问题

java - 复杂对象序列化

java - 将 resourceBundle 与外部文件一起使用,java