2021-12-27 21:29:51 +01:00
|
|
|
![build](https://github.com/Speiger/Primitive-Collections/actions/workflows/build_validator.yml/badge.svg)
|
2022-04-14 09:51:36 +02:00
|
|
|
![Latest Release](https://jitpack.io/v/Speiger/Primitive-Collections.svg)
|
|
|
|
|
2021-12-27 21:29:51 +01:00
|
|
|
|
2021-06-22 16:19:19 +02:00
|
|
|
# Primitive-Collections
|
2021-01-20 04:29:08 +01:00
|
|
|
|
2021-01-28 21:41:15 +01:00
|
|
|
This is a Simple Primitive Collections Library i started as a hobby Project.
|
|
|
|
It is based on Java's Collection Library and FastUtil.
|
|
|
|
But its focus is a different one.
|
2021-01-20 04:29:08 +01:00
|
|
|
|
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
|
2021-06-22 16:34:32 +02:00
|
|
|
- SplitIterators
|
|
|
|
- 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-14 07:29:32 +02:00
|
|
|
- AsyncBuilders
|
2021-12-11 12:53:58 +01:00
|
|
|
|
|
|
|
## Current Level of Stability
|
2021-12-11 12:56:01 +01:00
|
|
|
Since this is a relatively new Library, stability was not perfect and some areas are not perfect yet.
|
2021-12-14 09:05:25 +01:00
|
|
|
Thanks to [ben-manes](https://github.com/ben-manes) we now have Roughly 160k unit test covering Maps/Sets/Lists.
|
2021-12-11 12:56:01 +01:00
|
|
|
These tests cover Javas Collection API completely and ensuring a Stable implementation.
|
|
|
|
These freshly added tests allowed me to squash thousands of issues according to Googles Test Library (Guava-Tests).
|
|
|
|
These will be expanded on as time goes on.
|
2021-12-11 12:53:58 +01:00
|
|
|
|
2021-12-16 14:03:39 +01:00
|
|
|
### Benchmarks
|
|
|
|
Benchmarks can be found here: [Click Me](https://github.com/Speiger/Primitive-Collections-Benchmarks/tree/master)
|
|
|
|
|
2022-04-17 20:21:48 +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-09-14 17:19:27 +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.
|
|
|
|
Any breaking changes will be Documented (once 1.0 is released)
|
2021-06-23 19:22:19 +02:00
|
|
|
|
2021-10-11 19:39:09 +02:00
|
|
|
Also to save space every 0.0.x (Patch) that is 2 Minor Versions behind will be removed.
|
|
|
|
So if 0.5.0 is released every 0.3.x patch will be deleted, except for the last patch for that minor version.
|
|
|
|
|
2021-06-22 15:53:52 +02:00
|
|
|
# How to install
|
|
|
|
Using Gradle:
|
|
|
|
```gradle
|
|
|
|
repositories {
|
|
|
|
maven {
|
|
|
|
url = "https://maven.speiger.com/repository/main"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dependencies {
|
2022-04-14 09:51:36 +02:00
|
|
|
implementation 'de.speiger:Primitive-Collections:0.6.0'
|
|
|
|
}
|
|
|
|
```
|
|
|
|
Using Jitpack Gradle
|
|
|
|
```gradle
|
|
|
|
repositories {
|
|
|
|
maven {
|
|
|
|
url = "https://jitpack.io"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dependencies {
|
|
|
|
implementation 'com.github.Speiger:Primitive-Collections:0.6.0'
|
2021-06-22 15:53:52 +02:00
|
|
|
}
|
2021-08-12 15:03:52 +02:00
|
|
|
```
|
2022-04-14 09:51:36 +02:00
|
|
|
|
2021-08-12 15:03:05 +02:00
|
|
|
Direct:
|
|
|
|
|
|
|
|
| Version | Jar | Sources | Java Doc |
|
|
|
|
|--------- |------------------------------------------------------------------------------------------------------------------------------ |-------------------------------------------------------------------------------------------------------------------------------------- |-------------------------------------------------------------------------------------------------------------------------------------- |
|
2022-04-14 07:29:32 +02:00
|
|
|
| 0.6.0 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.6.0/Primitive-Collections-0.6.0.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.6.0/Primitive-Collections-0.6.0-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.6.0/Primitive-Collections-0.6.0-javadoc.jar) |
|
2021-12-26 01:58:22 +01:00
|
|
|
| 0.5.3 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.3/Primitive-Collections-0.5.3.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.3/Primitive-Collections-0.5.3-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.3/Primitive-Collections-0.5.3-javadoc.jar) |
|
2021-12-16 14:03:39 +01:00
|
|
|
| 0.5.2 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.2/Primitive-Collections-0.5.2.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.2/Primitive-Collections-0.5.2-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.2/Primitive-Collections-0.5.2-javadoc.jar) |
|
2021-12-14 09:05:25 +01:00
|
|
|
| 0.5.1 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.1/Primitive-Collections-0.5.1.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.1/Primitive-Collections-0.5.1-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.1/Primitive-Collections-0.5.1-javadoc.jar) |
|
2021-12-11 13:27:33 +01:00
|
|
|
| 0.5.0 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.0/Primitive-Collections-0.5.0.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.0/Primitive-Collections-0.5.0-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.5.0/Primitive-Collections-0.5.0-javadoc.jar) |
|
2021-10-30 07:39:05 +02:00
|
|
|
| 0.4.5 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.5/Primitive-Collections-0.4.5.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.5/Primitive-Collections-0.4.5-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.5/Primitive-Collections-0.4.5-javadoc.jar) |
|
2021-10-11 19:05:54 +02:00
|
|
|
| 0.4.4 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.4/Primitive-Collections-0.4.4.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.4/Primitive-Collections-0.4.4-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.4/Primitive-Collections-0.4.4-javadoc.jar) |
|
2021-10-07 14:50:52 +02:00
|
|
|
| 0.4.3 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.3/Primitive-Collections-0.4.3.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.3/Primitive-Collections-0.4.3-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.3/Primitive-Collections-0.4.3-javadoc.jar) |
|
2021-10-06 20:53:19 +02:00
|
|
|
| 0.4.2 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.2/Primitive-Collections-0.4.2.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.2/Primitive-Collections-0.4.2-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.2/Primitive-Collections-0.4.2-javadoc.jar) |
|
2021-09-29 02:11:29 +02:00
|
|
|
| 0.4.1 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1-javadoc.jar) |
|
2021-09-20 01:41:24 +02:00
|
|
|
| 0.4.0 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0-javadoc.jar) |
|
2021-09-13 17:09:31 +02:00
|
|
|
| 0.3.6 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6-javadoc.jar) |
|
2021-06-22 15:53:52 +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:
|
2021-01-29 11:41:48 +01:00
|
|
|
/gradlew.bat generateSource
|
2021-06-22 16:34:32 +02:00
|
|
|
|
|
|
|
to build the jar:
|
|
|
|
/gradlew.bat build
|
|
|
|
do not combine the commands because they can not be executed at the same time.
|
2021-01-28 21:39:58 +01:00
|
|
|
|
2021-04-27 00:49:15 +02:00
|
|
|
## Current Down Sides (Random order)
|
2021-12-27 21:29:51 +01:00
|
|
|
- Documentation is only present at the lowest level for most cases and needs a typo fixing.
|