JNumberTools is an open-source Java library that tames massive combinatorial problems in big data pipelines, delivering scalable permutations, combinations, Cartesian products, and rankings. Integrated with Apache Spark, Flink, and Hadoop for batch and stream processing, it outperforms libraries like Apache Commons and Guava with constrained generation and lexicographical sampling. From synthetic data generation to cybersecurity, bioinformatics, and software testing, JNumberTools empowers data engineers, developers, and researchers to solve real-world challenges efficiently.
Key Features:
- Versatile applications in machine learning, cryptography, testing, and optimization, with production-ready performance.
- Stream-based APIs for constrained permutations, combinations, and Cartesian products, optimized for distributed pipelines.
- Lexicographical sampling and ranking for efficient exploration of large combinatorial spaces.
- Seamless integration with Spark, Flink, and Hadoop for big data workflows.
The latest release of the library is v3.0.0.
It is available through The Maven Central Repository here.
Add the following section to your pom.xml
file.
<dependency>
<groupId>io.github.deepeshpatel</groupId>
<artifactId>jnumbertools</artifactId>
<version>3.0.0</version>
</dependency>
Currently Available Algorithms
- Permutations: 23 different types of permutations
- Combinations: 15 different types of combinations
- Set/subset generations: 7 different types available
- Cartesian Product: 4 different types of products
- Ranking of permutations & combinations: 7 different types of rankings
- Number system algorithms: 3 different types for combinatorics
- Math Functions