这可能听起来很愚蠢,但我想知道一切......
是否可以使用由给定字符集组成的字符串并使用更大的字符集对其进行压缩,或者将其组合成数字然后将其转换回来?
例如,如果你有一个字符串,你知道什么是由[a-z][A-Z][0-9]-_+=
组成的,你可以把它变成一个数字,然后用更多的字符交换它以便压缩它吗?
这是一个我不熟悉的领域,我仍然想把它保持为一个字符串,只是一个较短的字符串。 (用于显示/回显/等,而不是内存)
答案 0 :(得分:2)
除非字符串很大,否则我不会这么做。然后,您可以尝试使用commons-compress或java.util.zip
答案 1 :(得分:2)
一个字符串内部保存一个16位字符的数组,对于西欧语言来说这是一种浪费,你可以转换为utf-8,这样做可以减少50%
String myString = .....
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(myString.getBytes("UTF-8");
byte[] data = baos.toByteArray();
并将其保存为字节数组。
当然,如果您真的想将它们用作字符串,这是相当不方便的,但如果要点是长期存储,没有太多访问权限,这将为您节省很多。
你必须反过来重新创建一个字符串。
答案 2 :(得分:-1)
String是一种原始类型,除非使用Java的zip库,否则不太可能通过转换重新获得任何空间,即使这样也不会产生您可能想要的性能优势。