Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/landawn/abacus-common

Release the power in Java programming
https://github.com/landawn/abacus-common

functional-programming java java-streams json-parser lambda xml-parser

Last synced: about 1 month ago
JSON representation

Release the power in Java programming

Awesome Lists containing this project

README

        

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

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

## Features:

* Most daily used APIs: [CommonUtil](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/CommonUtil_view.html),
[N](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/N_view.html),
[Strings](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Strings_view.html),
[Numbers](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Numbers_view.html),
[Array](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Array_view.html),
[Iterables](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Iterables_view.html),
[Iterators](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Iterators_view.html),
[Maps](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Maps_view.html),
[DateUtil](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/DateUtil_view.html),
[IOUtil](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/IOUtil_view.html),
[Files](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Files_view.html),
[Index](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Index_view.html),
[Indexed](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Indexed_view.html),
[Keyed](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Keyed_view.html),
[If](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/If_view.html),
[Try](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Try_view.html),
[Synchronized](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Synchronized_view.html),
[Retry](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Retry_view.html),
[Multiset](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Multiset_view.html),
[Multimap](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Multimap_view.html),
[ListMultimap](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ListMultimap_view.html),
[SetMultimap](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/SetMultimap_view.html),
[DataSet](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/DataSet_view.html),
[Sheet](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Sheet_view.html),
[BiMap](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/BiMap_view.html),
[ImmutableList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ImmutableList_view.html),
[ImmutableSet](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ImmutableSet_view.html),
[ImmutableMap](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ImmutableMap_view.html),
[Result](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Result_view.html),
[Holder](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Holder_view.html),
[Pair](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Pair_view.html),
[Triple](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Triple_view.html),
[Tuple](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Tuple_view.html),
[Range](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Range_view.html),
[Duration](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Duration_view.html),
[Fraction](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Fraction_view.html),
[Splitter](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Splitter_view.html),
[Joiner](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Joiner_view.html),
[Builder](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Builder_view.html),
[Difference](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Difference_view.html),
[Comparators](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Comparators_view.html),
[Hashing](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Hashing_view.html),
[Clazz](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Clazz_view.html),
[Hex](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Hex_view.html),
[DigestUtil](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/DigestUtil_view.html),
[URLEncodedUtil](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/URLEncodedUtil_view.html),
[AsyncExecutor](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/AsyncExecutor_view.html),
[ContinuableFuture](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ContinuableFuture_view.html),
[Futures](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Futures_view.html),
[JSONUtil](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/JSONUtil_view.html),
[Profiler](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Profiler_view.html)...

* Primitive Mutable:
[MutableBoolean](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableBoolean_view.html),
[MutableChar](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableChar_view.html),
[MutableByte](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableByte_view.html),
[MutableShort](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableShort_view.html),
[MutableInt](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableInt_view.html),
[MutableLong](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableLong_view.html),
[MutableFloat](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableFloat_view.html) and
[MutableDouble](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/MutableDouble_view.html).

* Primitive List:
[PrimitiveList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/PrimitiveList_view.html),
[BooleanList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/BooleanList_view.html),
[CharList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/CharList_view.html),
[ByteList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ByteList_view.html),
[ShortList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ShortList_view.html),
[IntList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/IntList_view.html),
[LongList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/LongList_view.html),
[FloatList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/FloatList_view.html) and
[DoubleList](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/DoubleList_view.html).

* Primitive/Immutable Iterator:
[ObjIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ObjIterator_view.html),
[BooleanIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/BooleanIterator_view.html),
[CharIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/CharIterator_view.html),
[ByteIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ByteIterator_view.html),
[ShortIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ShortIterator_view.html),
[IntIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/IntIterator_view.html),
[LongIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/LongIterator_view.html),
[FloatIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/FloatIterator_view.html),
[DoubleIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/DoubleIterator_view.html),
[BiIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/BiIterator_view.html),
[TriIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/TriIterator_view.html) and
[LineIterator](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/LineIterator_view.html).

* Optional:
[OptionalBoolean](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalBoolean_view.html),
[OptionalChar](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalChar_view.html),
[OptionalByte](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalByte_view.html),
[OptionalShort](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalShort_view.html),
[OptionalInt](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalInt_view.html),
[OptionalLong](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalLong_view.html),
[OptionalFloat](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalFloat_view.html),
[OptionalDouble](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OptionalDouble_view.html),
[Optional](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Optional_view.html) and
[Nullable](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Nullable_view.html)

* Streams, both sequential and parallel, are supported with more functions:
[BaseStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/BaseStream_view.html),
[Stream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Stream_view.html),
[CharStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/CharStream_view.html),
[ByteStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ByteStream_view.html),
[ShortStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ShortStream_view.html),
[IntStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/IntStream_view.html),
[LongStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/LongStream_view.html),
[FloatStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/FloatStream_view.html),
[DoubleStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/DoubleStream_view.html),
[EntryStream](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/EntryStream_view.html),
[Seq](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Seq_view.html),
[Fn](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Fn_view.html),
more [Collectors](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Collectors_view.html) and
[Throwables](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Throwables_view.html).

* JSON/XML Data Binding:
[Parser](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Parser_view.html),
[JSONParser](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/JSONParser_view.html),
[XMLParser](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/XMLParser_view.html),
[KryoParser](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/KryoParser_view.html),
[ParserFactory](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ParserFactory_view.html)...

* Http:
[HttpClient](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/HttpClient_view.html),
[HttpRequest](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/HttpRequest_view.html),
[OkHttpRequest](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/OkHttpRequest_view.html),
and [More](https://www.javadoc.io/static/com.landawn/abacus-common/5.6.0/com/landawn/abacus/http/package-summary.html) ...

* Pool:
[Pool](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/Pool_view.html),
[ObjectPool](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/ObjectPool_view.html),
[KeyedObjectPool](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/KeyedObjectPool_view.html),
[PoolFactory](https://htmlpreview.github.io/?https://github.com/landawn/abacus-common/master/docs/PoolFactory_view.html)...

* More:
[CodeGenerationUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/CodeGenerationUtil.html),
[JsonMappers](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/JsonMappers.html),
[XmlMappers](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/XmlMappers.html),
[Charsets](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Charsets.html),
[Ascii](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Ascii.html),
[CalendarField](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/CalendarField.html),
[NamingPolicy](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/NamingPolicy.html),
[Properties](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Properties.html),
[PropertiesUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/PropertiesUtil.html),
[Configuration](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Configuration.html),
[XmlUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/XmlUtil.html),
[Wrapper](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Wrapper.html),
[ClassUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/ClassUtil.html),
[CSVUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/CSVUtil.html),
[EscapeUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/EscapeUtil.html),
[RegExUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/RegExUtil.html),
[FilenameUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/FilenameUtil.html),
[AddrUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/AddrUtil.html),
[WSSecurityUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/WSSecurityUtil.html),
[EmailUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/EmailUtil.html),
[IEEE754rUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/IEEE754rUtil.html),
[Timed](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Timed.html),
[IndexedKeyed](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/IndexedKeyed.html),
[Median](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Median.html),
[Stopwatch](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/Stopwatch.html),
[RateLimiter](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/RateLimiter.html),
[TypeReference](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/util/TypeReference.html),
[WebUtil](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/http/WebUtil.html),
[Files](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/guava/Files.html),
[Traverser](https://static.javadoc.io/com.landawn/abacus-common/5.6.0/com/landawn/abacus/guava/Traverser.html)(copied from Apache commons, Google Guava...under Apache License v2) ...

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

* [Maven](https://central.sonatype.com/artifact/com.landawn/abacus-common)

```xml

com.landawn
abacus-common
5.6.0

```

* Gradle:

```gradle
// JDK 17 or above:
compile 'com.landawn:abacus-common:5.6.0'
```

### 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 abacus-common)

[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/abacus-common/wiki)

## Also See: [abacus-jdbc](https://github.com/landawn/abacus-jdbc), [abacus-query](https://github.com/landawn/abacus-query), [abacus-extra](https://github.com/landawn/abacus-extra), [abacus-cache](https://github.com/landawn/abacus-cache) and [abacus-android](https://github.com/landawn/abacus-android)

## Recommended Java programming libraries/frameworks:
[lombok](https://github.com/rzwitserloot/lombok),
[Guava](https://github.com/google/guava),
[protobuf](https://github.com/protocolbuffers/protobuf),
[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),
[echarts](https://github.com/apache/incubator-echarts),
[Chartjs](https://github.com/chartjs/Chart.js),
[Highcharts](https://www.highcharts.com/blog/products/highcharts/),
[Apache POI](https://github.com/apache/poi),
[easyexcel](https://github.com/alibaba/easyexcel),
[opencsv](http://opencsv.sourceforge.net/),
[mapstruct](https://github.com/mapstruct/mapstruct),
[fastutil](https://github.com/vigna/fastutil),
[hppc](https://github.com/carrotsearch/hppc),
[re2j](https://github.com/google/re2j) ... [awesome-java](https://github.com/akullpp/awesome-java)

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

### Principles of API design:

[How To Design A Good API and Why it Matters](https://www.youtube.com/watch?v=aAb7hSCtvGw)

##

If Proposals is slow with Big class: N, Strings, Stream, Open the class file and explore the methods in outline once. Then test again.
![image](https://github.com/landawn/abacus-common/assets/16568599/248990bb-f2c8-43e0-956b-edaa1477d5cd)

...beyond imagination...