Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
landawn committed May 27, 2019
1 parent de39836 commit 3d66248
Showing 1 changed file with 260 additions and 1 deletion.
261 changes: 260 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,260 @@
# Please refer to: [AbacusUtil](https://github.com/landawn/AbacusUtil)
# Abacus-Util

[![Maven Central](https://img.shields.io/maven-central/v/com.landawn/abacus-util.svg)](https://maven-badges.herokuapp.com/maven-central/com.landawn/abacus-util/)
[![Javadocs](https://www.javadoc.io/badge/com.landawn/abacus-util.svg)](https://www.javadoc.io/doc/com.landawn/abacus-util)

A general programming library in Java/Android. It's easy to learn and simple to use with concise and powerful APIs.

## Features:

* Most daily used APIs: [N](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/N_view.html),
[StringUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/StringUtil_view.html),
[Array](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Array_view.html),
[Primitives](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Primitives_view.html),
[Seq](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Seq_view.html),
[Iterables](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Iterables_view.html),
[Iterators](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Iterators_view.html),
[Maps](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Maps_view.html),
[DateUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DateUtil_view.html),
[IOUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/IOUtil_view.html),
[f](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/f_view.html),
[Indexed](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Indexed_view.html),
[If](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/If_view.html),
[Try](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Try_view.html),
[Synchronized](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Synchronized_view.html),
[Retry](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Retry_view.html),
[Multiset](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Multiset_view.html),
[Multimap](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Multimap_view.html),
[DataSet](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DataSet_view.html),
[Sheet](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Sheet_view.html),
[BiMap](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/BiMap_view.html),
[ImmutableList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ImmutableList_view.html),
[ImmutableSet](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ImmutableSet_view.html),
[ImmutableMap](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ImmutableMap_view.html),
[Result](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Result_view.html),
[Holder](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Holder_view.html),
[Pair](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Pair_view.html),
[Triple](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Triple_view.html),
[Tuple](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Tuple_view.html),
[Range](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Range_view.html),
[Duration](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Duration_view.html),
[Fraction](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Fraction_view.html),
[Splitter](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Splitter_view.html),
[Joiner](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Joiner_view.html),
[Builder](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Builder_view.html),
[Difference](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Difference_view.html),
[Comparators](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Comparators_view.html),
[Chain](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Chain_view.html),
[Hashing](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Hashing_view.html),
[Clazz](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Clazz_view.html),
[Hex](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Hex_view.html),
[JdbcUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/JdbcUtil_view.html),
[CSVUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CSVUtil_view.html),
[DigestUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DigestUtil_view.html),
[JSONUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/JSONUtil_view.html),
[URLEncodedUtil](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/URLEncodedUtil_view.html),
[AsyncExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/AsyncExecutor_view.html),
[ContinuableFuture](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ContinuableFuture_view.html),
[Futures](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Futures_view.html),
[HttpClient](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/HttpClient_view.html),
[OkHttpRequest](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OkHttpRequest_view.html),
[Profiler](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Profiler_view.html),
[CodeGenerator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CodeGenerator_view.html)...

* Primitive Mutable:
[MutableBoolean](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableBoolean_view.html),
[MutableChar](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableChar_view.html),
[MutableByte](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableByte_view.html),
[MutableShort](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableShort_view.html),
[MutableInt](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableInt_view.html),
[MutableLong](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableLong_view.html),
[MutableFloat](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableFloat_view.html) and
[MutableDouble](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MutableDouble_view.html).

* Primitive List:
[BooleanList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/BooleanList_view.html),
[CharList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CharList_view.html),
[ByteList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ByteList_view.html),
[ShortList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ShortList_view.html),
[IntList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/IntList_view.html),
[LongList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/LongList_view.html),
[FloatList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/FloatList_view.html) and
[DoubleList](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DoubleList_view.html).

* Primitive Pair/Tuple:
[BooleanPair](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/BooleanPair_view.html),
[BooleanTriple](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/BooleanTriple_view.html)...
[DoublePair](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DoublePair_view.html),
[DoubleTriple](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DoubleTriple_view.html).

* Primitive/Immutable Iterator:
[BooleanIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/BooleanIterator_view.html),
[CharIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CharIterator_view.html),
[ByteIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ByteIterator_view.html),
[ShortIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ShortIterator_view.html),
[IntIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/IntIterator_view.html),
[LongIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/LongIterator_view.html),
[FloatIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/FloatIterator_view.html),
[DoubleIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DoubleIterator_view.html),
[ObjIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ObjIterator_view.html) and
[LineIterator](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/LineIterator_view.html).

* Optional:
[OptionalBoolean](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalBoolean_view.html),
[OptionalChar](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalChar_view.html),
[OptionalByte](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalByte_view.html),
[OptionalShort](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalShort_view.html),
[OptionalInt](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalInt_view.html),
[OptionalLong](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalLong_view.html),
[OptionalFloat](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalFloat_view.html),
[OptionalDouble](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/OptionalDouble_view.html),
[Optional](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Optional_view.html) and
[Nullable](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Nullable_view.html)

* Streams, both sequential and parallel, are supported for JDK7/Anrdoid and primitive types with more functions:
[BaseStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/BaseStream_view.html),
[Stream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Stream_view.html),
[CharStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CharStream_view.html),
[ByteStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ByteStream_view.html),
[ShortStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ShortStream_view.html),
[IntStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/IntStream_view.html),
[LongStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/LongStream_view.html),
[FloatStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/FloatStream_view.html),
[DoubleStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DoubleStream_view.html),
[EntryStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/EntryStream_view.html),
[ExceptionalStream](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ExceptionalStream_view.html),
[Fn](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Fn_view.html) and more
[Collectors](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Collectors_view.html).

* Programming in Android:
[SQLiteExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/SQLiteExecutor_view.html),
[SQLBuilder](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/SQLBuilder_view.html),
[Async](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Async_Android_view.html),
[ContinuableFuture](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ContinuableFuture_Android_view.html),
[Futures](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Futures_Android_view.html),
[EventBus](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/EventBus_view.html),
[Observer](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Observer_view.html),
[ObserverX](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ObserverX_view.html) and
[Fu](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Fu_view.html).

* SQL Builder/ORM:
[DataSet](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DataSet_view.html),
[SQLExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/SQLExecutor_view.html),
[Mapper](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Mapper_view.html),
[PreparedQuery](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/PreparedQuery_view.html),
[SQLBuilder](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/SQLBuilder_view.html),
[DynamicSQLBuilder](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DynamicSQLBuilder_view.html),
[ConditionFactory(L)](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ConditionFactory_view.html)...

* ORMs for NoSQL:
[MongoCollectionExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MongoCollectionExecutor_view.html),
[CassandraExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CassandraExecutor_view.html) with [CQLBuilder](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CQLBuilder_view.html),
[CouchbaseExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/CouchbaseExecutor_view.html),
[HBaseExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/HBaseExecutor_view.html),
[DynamoDBExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DynamoDBExecutor_view.html) and
[Neo4jExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Neo4jExecutor_view.html).

* JSON/XML Data Binding:
[Parser](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Parser_view.html),
[JSONParser](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/JSONParser_view.html),
[XMLParser](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/XMLParser_view.html),
[KryoParser](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/KryoParser_view.html),
[ParserFactory](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ParserFactory_view.html)...

* Pool:
[Pool](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Pool_view.html),
[ObjectPool](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/ObjectPool_view.html),
[KeyedObjectPool](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/KeyedObjectPool_view.html),
[PoolFactory](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/PoolFactory_view.html)...

* Matrix:
[AbstractMatrix](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/AbstractMatrix_view.html),
[Matrix](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/Matrix_view.html),
[IntMatrix](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/IntMatrix_view.html),
[LongMatrix](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/LongMatrix_view.html),
[DoubleMatrix](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/DoubleMatrix_view.html)...

* SpyMemcached/JRedis:
[SpyMemcached](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/SpyMemcached_view.html),
[JRedis](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/JRedis_view.html),
[MemcachedLock](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/MemcachedLock_view.html).

* [Deploy Once, Run Anytime](https://github.com/landawn/AbacusUtil/wiki/Deploy-Once,-Run-Anytime):
[RemoteExecutor](https://cdn.rawgit.com/landawn/AbacusUtil/master/docs/RemoteExecutor_view.html).

* More:
[Charsets](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Charsets.html),
[Ascii](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Ascii.html),
[CalendarUnit](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/CalendarUnit.html),
[NamingPolicy](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/NamingPolicy.html),
[Properties](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Properties.html),
[PropertiesUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/PropertiesUtil.html),
[Wrapper](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Wrapper.html),
[ArrayHashSet](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/ArrayHashSet.html),
[ArrayHashMap](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/ArrayHashMap.html),
[ClassUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/ClassUtil.html),
[EscapeUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/EscapeUtil.html),
[RegExUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/RegExUtil.html),
[FilenameUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/FilenameUtil.html),
[AWSJSONUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/AWSJSONUtil.html),
[AddrUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/AddrUtil.html),
[WSSecurityUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/WSSecurityUtil.html),
[EmailUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/EmailUtil.html),
[IEEE754rUtil](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/IEEE754rUtil.html),
[Index](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Index.html),
[Median](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Median.html),
[f](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/f.html),
[Matth](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Matth.html),
[SafeInitializer](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/SafeInitializer.html),
[Stopwatch](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Stopwatch.html),
[RateLimiter](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/RateLimiter.html),
[Traverser](https://static.javadoc.io/com.landawn/abacus-util/1.7.3/com/landawn/abacus/util/Traverser.html)(from Apache commons, Google Guava...) ...


## Download/Installation & [Changes](https://github.com/landawn/AbacusUtil/blob/master/CHANGES.md):

* [Maven](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.landawn%22)

* Gradle:
```gradle
// JDK 1.8 or above:
compile 'com.landawn:abacus-util:1.7.3'
// JDK 1.7:
compile 'com.landawn:abacus-util-jdk7:1.7.3'
// Android (Java 1.7):
compile 'abacus-android-jdk7:1.7.3'
// Android-SE (Java 1.7) - small edition without Stream/Matrix/Sheet/...:
compile 'abacus-android-se-jdk7:1.7.3'
// Android (Java 1.8 or above):
compile 'com.landawn:abacus-android:1.7.3'
// Android-SE (Java 1.8 or above) - small edition without Stream/Matrix/Sheet/...:
compile 'com.landawn:abacus-android-se:1.7.3'
```
### Functional Programming:
(It's very important to learn Lambdas and Stream APIs in Java 8 to get the best user experiences with the APIs provided in AbacusUtil)

[What's New in Java 8](https://leanpub.com/whatsnewinjava8/read)

[An introduction to the java.util.stream library](https://www.ibm.com/developerworks/library/j-java-streams-1-brian-goetz/index.html)

[When to use parallel streams](http://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html)

[Top Java 8 stream questions on stackoverflow](./Top_java_8_stream_questions_so.md)

[Kotlin vs Java 8 on Collection](./Java_Kotlin.md)


## User Guide:
Please refer to [Wiki](https://github.com/landawn/AbacusUtil/wiki), [Introduction to JDBC](https://www.javacodegeeks.com/2015/02/jdbc-tutorial.html).


## Recommended Java programming libraries/frameworks:
[lombok](https://github.com/rzwitserloot/lombok), [Guava](https://github.com/google/guava), [Abacus-StreamEx](https://github.com/landawn/streamex), [Kyro](https://github.com/EsotericSoftware/kryo), [snappy-java](https://github.com/xerial/snappy-java), [lz4-java](https://github.com/lz4/lz4-java), [Caffeine](https://github.com/ben-manes/caffeine), [Ehcache](http://www.ehcache.org/), [Chronicle-Map](https://github.com/OpenHFT/Chronicle-Map), [Apache POI](https://github.com/apache/poi)/[easyexcel](https://github.com/alibaba/easyexcel), [mapstruct](https://github.com/mapstruct/mapstruct), [Sharding-JDBC](https://github.com/apache/incubator-shardingsphere), [hppc](https://github.com/carrotsearch/hppc), [fastutil](https://github.com/vigna/fastutil) ...[awesome-java](https://github.com/akullpp/awesome-java)

## Recommended Java programming tools:
[Spotbugs](https://github.com/spotbugs/spotbugs), [JaCoCo](https://www.eclemma.org/jacoco/)...

0 comments on commit 3d66248

Please sign in to comment.