首页 > 系统 > Android > 正文

<Android开源库> Essential介绍 <译文>

2019-11-07 23:18:22
字体:
来源:转载
供稿:网友

简介

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(包括输入/​​输出流)

集成

1. 添加到工程

使用最新版本

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>

2. 示例代码

// Get all bytes from stream and close the stream safelybyte[] bytes = IoUtils.readAllBytesAndClose(inputStream);// Read the contents of an file as a string (use readBytes to get byte[])String contents = FileUtils.readUtf8(file);// How many days until new year's eve?long time2 = DateUtils.getTimeForDay(2015, 12, 31);int daysToNewYear = DateUtils.getDayDifference(time, time2);

多映射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。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表