2022-06-14 10:44:02 +02:00
![build ](https://github.com/Speiger/Primitive-Collections/actions/workflows/build_action.yml/badge.svg )
2022-04-21 17:25:23 +02:00
[![Latest Release ](https://jitpack.io/v/Speiger/Primitive-Collections.svg )](https://jitpack.io/#Speiger/Primitive-Collections)
2024-03-30 01:08:38 +01:00
![Maven Central Version ](https://img.shields.io/maven-central/v/io.github.speiger/Primitive-Collections )
2022-04-21 17:25:23 +02:00
[![License ](https://img.shields.io/badge/License-Apache_2.0-blue.svg )](https://opensource.org/licenses/Apache-2.0)
2022-06-14 10:44:02 +02:00
![GitHub commit activity ](https://img.shields.io/github/commit-activity/m/Speiger/Primitive-Collections )
![Unit Tests ](https://github.com/Speiger/Primitive-Collections/actions/workflows/build_tests_action.yml/badge.svg )
![Coverage ](https://gist.githubusercontent.com/Speiger/280257cd19cbe1dda3789bebd4ff65cf/raw/405abd1d2f6c19ac70f20b8b1772176f42d5c5d3/jacoco.svg )
2022-06-12 14:31:45 +02:00
[![codecov ](https://codecov.io/gh/Speiger/Primitive-Collections/branch/debug/graph/badge.svg?token=WSTSNJM0EN )](https://codecov.io/gh/Speiger/Primitive-Collections)
2022-06-14 10:44:02 +02:00
![Tests Done ](https://gist.githubusercontent.com/Speiger/280257cd19cbe1dda3789bebd4ff65cf/raw/405abd1d2f6c19ac70f20b8b1772176f42d5c5d3/tests.svg )
2021-06-22 16:19:19 +02:00
# Primitive-Collections
2022-04-18 09:06:32 +02:00
This is a Simple Primitive Collections Library aimed to outperform Java's Collection Library and FastUtil.
Both in Performance and Quality of Life Features.
## Benchmarks
2022-04-18 21:41:55 +02:00
Benchmarks can be found here: [[Charts]](https://github.com/Speiger/Primitive-Collections-Benchmarks/blob/master/BENCHMARKS-CHARTS.md), [[Tables]](https://github.com/Speiger/Primitive-Collections-Benchmarks/blob/master/BENCHMARKS.md)
2021-01-20 04:29:08 +01:00
2022-04-18 09:06:32 +02:00
## Special Features
[Here ](features.md ) you find a set of features added to Primitive Collections.
These are designed to improve performance or to provide Quality of Life.
2021-01-20 04:29:08 +01:00
2022-12-19 16:03:43 +01:00
[Here ](EXTRAS.md ) you also find features that can be used when you compile the library for yourself.
These features are not used by default to have a wider range of compat, or require self compilation.
Such as pruning classes that are not needed in your code.
2021-09-20 01:41:24 +02:00
## Main Features:
2022-04-14 07:29:32 +02:00
- ArrayLists / LinkedLists / CopyOnWriteLists
2021-12-14 09:05:25 +01:00
- HashSets/Maps (Linked & HashControl)
- TreeSets/Maps (RB & AVL)
- EnumMaps
2021-06-27 16:05:43 +02:00
- Immutable Maps/Lists/Sets
2022-04-14 07:29:32 +02:00
- ConcurrentHashMaps
2021-12-14 09:05:25 +01:00
- Priority Queues
2021-12-10 03:27:33 +01:00
- Streams & Functional Queries
2022-04-18 09:06:32 +02:00
- Split/Iterators
2021-09-19 22:34:46 +02:00
- Pairs
2021-09-28 12:06:51 +02:00
- Unary/Functions
- Suppliers
- Bi/Consumers
2022-04-18 09:06:32 +02:00
- AsyncBuilders
2022-04-17 20:21:48 +02:00
2021-06-23 19:22:19 +02:00
# Notes about Versions
2021-06-23 19:34:32 +02:00
Any 0.x.0 version (Minor) can be reason for massive changes including API.
To ensure that problems can be dealt with even if it is breaking the current API.
2021-10-11 19:39:09 +02:00
2021-06-22 15:53:52 +02:00
# How to install
2022-04-21 17:41:50 +02:00
Using Jitpack Gradle
2024-04-11 19:11:07 +02:00
```groovy
2021-06-22 15:53:52 +02:00
repositories {
maven {
2022-04-21 17:41:50 +02:00
url = "https://jitpack.io"
2021-06-22 15:53:52 +02:00
}
}
dependencies {
2023-06-29 22:52:44 +02:00
implementation 'com.github.Speiger:Primitive-Collections:0.9.0'
2022-04-14 09:51:36 +02:00
}
```
2021-06-22 15:53:52 +02:00
2024-04-11 19:11:07 +02:00
Using Maven Central
```groovy
dependencies {
implementation 'io.github.speiger:Primitive-Collections:0.9.0'
}
```
2022-06-12 14:31:45 +02:00
# SourceCode
The generated Sourcecode can be automatically build,
but if you want to just browse around in it.
Check out the [Debug Branch ](https://github.com/Speiger/Primitive-Collections/tree/debug/src/main/java/speiger/src/collections ), which has the entire up to date code.
2022-04-18 09:06:32 +02:00
2021-06-22 16:34:32 +02:00
# Contributing
If you want to contribute.
This project is created using gradle and java and my Template Library only. Nothing extra.
If you setup gradle the library will be downloaded automatically.
Where is everything stored?
2021-09-20 01:41:24 +02:00
- Variables and ClassNames are define [here ](src/builder/java/speiger/src/builder/GlobalVariables.java )
- Templates are stored [here ](src/builder/resources/speiger/assets/collections/templates )
- Tests can be found [here ](src/test/java/speiger/src/collections )
2021-06-22 16:34:32 +02:00
2021-09-20 01:41:24 +02:00
Please if you want to contribute follow the [Rule-Sheet ](RuleSheet.md ). It keeps everything in line.
2021-06-22 16:34:32 +02:00
2021-06-22 15:53:52 +02:00
# How to Build
2021-01-20 04:29:08 +01:00
2021-06-22 16:34:32 +02:00
The SourceCode can be generated via:
2022-12-19 16:03:43 +01:00
```
2021-01-29 11:41:48 +01:00
/gradlew.bat generateSource
2022-12-19 16:03:43 +01:00
```
2021-06-22 16:34:32 +02:00
2022-04-28 19:09:42 +02:00
to generate SourceCode and build the jar:
2022-12-19 16:03:43 +01:00
```
/gradlew.bat build
```