繁体   English   中英

适用于Java的UTF-8字符串类

[英]UTF-8 String class for java

我需要在内存中容纳很多字符串对象(数百MB),并且我想以UTF-8格式保存它们,因为在大多数情况下,它将需要默认实现使用的一半内存。
默认的String类需要12个字符的字符串(60个字节)(请参见http://blog.griddynamics.com/2010/01/java-tricks-reducing-memory-consumption.html )。
我的大多数字符串都长10到20个字符。
我想知道是否有一些开源库为此类字符串提供包装器?
我知道如何将String转换为UTF-8字节数组,但是我正在寻找一个包装器类,该包装器类将提供所有必需的实用程序功能(哈希,等于,toString,fromString等)。

Apache Avro具有实现CharSequenceUTF8包装器类 ,但我不知道此类对象的内存消耗

Hadoop具有Text类该类具有您想要的那种接口

如果要为每个字符串使用不同的对象,并且希望它们尽可能紧凑,请使用字节数组。 这将是每个字符1个字节vs 2个字节,并且您将没有String标头的开销(每个标头可能会增加32个字节)。

但是,当然,如果不先转换为String,就无法在这些方法上使用任何String方法。

但是,如果您真的想节省空间,可以将字符串背靠背存储在一些较大的数组中,并使用“掺杂向量”定位各个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM