GreenRobot Essentials为Android和java项目提供通用的实用工具。 在Android开发的早期,它就已经存在了。整个库很简单,jar包 <100k,在效率和性能上也是独树一帜的。
Essentials是一个通用类的集合,我们发现在许多场合都很有用。
使用要点的主要原因:
在项目中编写较少的代码专门实现与标准API相比更好的性能超轻量级:<100k兼容Android和Java特征:
IO utilities 在IO流(基于字节和字符)和digests(例如md5和SHA-1)上起到很大的帮助作用。File utilities 简化了从字符串/字节/对象写入文件或向文件写入字符串/字节/对象。还包括从文件获取哈希和复制文件。String utilities允许有效分割和连接字符串,hex和MD5创建,以及其他有用的字符串助手。Better hash functions: :我们的Murmur3实现提供了优越的散列质量,并且胜过标准的Java散列函数Specialized Streams: 例如优化的PipedOutputStream替换(基于循环字节缓冲器)Hash set and map for PRimitive long keys 原始长键的哈希集和映射优于Java集合API的通用版本Multimaps多映射提供了列表或集合的映射,以简化为单个键存储多个值Object cache 对象缓存具有强大的配置选项:软/弱/强引用,最大大小和基于时间的到期Base64实现(从iharder.net捆绑)用于较低版本的Java和Android(包括输入/输出流)使用最新版本
compile 'org.greenrobot:essentials:3.0.0-RC1'或者使用老版本
compile 'de.greenrobot:java-common:2.3.1'针对Maven
<dependency> <groupId>de.greenrobot</groupId> <artifactId>java-common</artifactId> <version>2.3.1</version></dependency>多映射Map(版本v2.2加入)
ListMap<String,String> multimap = new ListMap<>();multimap.putElement("a", "1");multimap.putElement("a", "2");multimap.putElement("a", "3");List<String> strings = multimap.get("a"); //Contains "1", "2", and "3"散列函数实现 java.util.zip.Checksum,所以下面的代码可能看起来很眼熟
Murmur3A murmur = new Murmur3A();murmur.update(bytes);long hash = murmur.getValue();所有散列可以通过多次调用update(…)来逐步计算。 我们的Murmur3A实现更进一步,以非常有效的方式提供原始数据的更新:
// reuse the previous instance and start over to calculate a new hashmurmur.reset();murmur.updateLong(42L);// Varargs and arrays are supported natively, too murmur.updateInt(2014, 2015, 2016);murmur.updateUtf8("And strings, of course");// Hash for the previous update calls. No conversion to byte[] necessary.hash = murmur.getValue();实用程序类是直接的,没有依赖性,所以你应该很好地通过看看他们的源代码来掌握它们。 大多数方法名称应该是自解释的,通常你会在需要的地方找到JavaDocs。
新闻热点
疑难解答