<Android开源库> Essential介绍 <译文>
2017-02-25 23:05
411 查看
简介
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 safely byte[] 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 hash murmur.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。
相关文章推荐
- <Android 开源库> GreenDAO 用法详解<译文>
- <Android开源库> EventBus 用法详解<译文>
- <Android开源库> Realm For Android~ RelationShips and Writes(译文)
- <Android开源库> MPAndroidChart Wiki(译文)~Part 5
- <Android开源库> Realm For Android~ Adapter &Supporting other library(译文)
- <Android开源库> Realm For Android~ Realm(译文)
- <Android开源库> MPAndroidChart Wiki(译文)~Part 2
- <Android开源库> Realm For Android~ Migrations & Encryption & Working With Android(译文)
- <Android开源库> Realm For Android~ Queries(译文)
- <Android开源库> MPAndroidChart Wiki(译文)~Part 3
- <Android开源库> Realm For Android~ Getting Started(译文)
- <Android开源库> Realm For Android~ Scheme & JSON & Notification(译文)
- <Android开源库> MPAndroidChart Wiki(译文)~Part 6
- <Android开源库> MPAndroidChart Wiki(译文)~Part 1
- <Android开源库> Realm For Android~ Threading(译文)
- <Android开源库> MPAndroidChart Wiki(译文)~Part 4
- <Android开源库> Realm For Android~ Getting Help and Models(译文)
- <java基础>零起点学Android(一)大体介绍
- <Android 开源库> Android OpenCSV
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习