我有一个字典树,其中的键是 UTF-8 字节序列。 我想打印所有键,或将它们全部转换为字符串。 我递归地遍历 trie,添加或删除 ArrayList 中的字节。
我应该使用 ArrayList 以外的其他东西吗?我希望它高效。字节缓冲区?
如果我使用 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/