Simple library to create primitive collections. Using template files to generate them. Project for self teaching.
Go to file
Alexander Hinze 3f6ffea14e Add JetBrains annotations to common base classes 2021-09-25 20:23:01 +02:00
gradle/wrapper Pushing Wrapper 2021-06-22 17:34:53 +02:00
src Add JetBrains annotations to common base classes 2021-09-25 20:23:01 +02:00
.classpath Map Tests & BugFixes. 2021-04-22 23:02:04 +02:00
.gitattributes Removed the double foldering and started some seriouse work. 2020-11-11 21:33:59 +01:00
.gitignore Make Gradle wrapper executable on Linux and add IntelliJ .gitignore entries 2021-09-25 19:51:27 +02:00
.project Map Tests & BugFixes. 2021-04-22 23:02:04 +02:00
Changelog.md Version 0.4.0 Release and Readme Update 2021-09-20 01:41:24 +02:00
LICENSE Updated License & Readme 2021-01-28 21:39:58 +01:00
README.md Version 0.4.0 Release and Readme Update 2021-09-20 01:41:24 +02:00
RuleSheet.md New Content patch getting big progress on base and progress on lists. 2020-11-16 02:55:33 +01:00
build.gradle Clean up buildscript & add JB annotations as well as a proper build config 2021-09-25 20:22:25 +02:00
build.properties Clean up buildscript & add JB annotations as well as a proper build config 2021-09-25 20:22:25 +02:00
gradlew Make Gradle wrapper executable on Linux and add IntelliJ .gitignore entries 2021-09-25 19:51:27 +02:00
gradlew.bat Removed the double foldering and started some seriouse work. 2020-11-11 21:33:59 +01:00
settings.gradle Removed the double foldering and started some seriouse work. 2020-11-11 21:33:59 +01:00

README.md

Primitive-Collections

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.

Main Features:

  • ArrayLists / LinkedLists
  • HashSet/Map (Linked & HashControl)
  • TreeSet/Map (RB & AVL)
  • EnumMap
  • Immutable Maps/Lists/Sets
  • Priority Queue
  • Streams
  • SplitIterators
  • Iterators
  • Pairs

Specialized Functions

New Specialized functions that were added to increase performance or reduce allocations or Quality Of life. To highlight things that may be wanted.

  • Iterable:
    • map/flatMap/arrayFlatMap: A Light weight version of Stream.map()
    • findFirst: Allows to find the first element of a Predicated Iterable.
    • filter: Allows to filter unwanted elements for wrapped Iterable
    • matchAny/matchNone/matchAll: Allows to find elements in a collection.
    • forEach: Allows to input a second element into a forEach move allowing for more flexibility for Method References
  • Collection:
    • containsAny: Allows to test if another collection contains an of the elements of the tested collection.
    • primitiveStream: Provides access to the closest Java Stream Type.
  • List:
    • add/get/removeElements (From FastUtil): Allows to add/get/remove an Array into/from a list. Just with less overhead
    • extractElements: Allows to remove a Range of elements from the List and get what was removed.
    • Unstable Sort(From FastUtil): Uses a faster but not stable sort (Quick-Sort as example) to sort the list.
  • SortedSet:
    • addAndMoveToFirst/Last (From FastUtil but moved to Interface): Allows to add a element to the first/last position of a sorted set.
    • moveToFirst/Last: Moves the desired element at the first/last position of the SortedSet.
    • pollFirst/Last: Allows to poll the first/last element of the set.
  • Map:
    • putAll: putAll but in Array form.
    • putAllIfAbsent: Puts only the elements that are absent.
    • addTo (Only Primitives Values) (From FastUtil but moved to Interface): allows to add to the value of a given key. If not present it will be added. (Accumulator)
    • addToAll: Same as addTo but bulkVersion.
    • removeOrDefault: removes a Element and if not present returns the default value instead of the present value.
    • mergeAll: BulkVersion of Merge function.
  • Sorted Map:
    • addAndMoveToFirst/Last (From FastUtil but moved to Interface): Allows to add a element to the first/last position of a sorted Map.
    • moveToFirst/Last: Moves the desired element at the first/last position of the Map.
    • getAndMoveToFirst/Last: gets the element and moves it to the first/last position. Replicating a Optional LinkedHashMap feature.
    • pollFirst/LastKey: Allows to poll the first/last element.
    • first/LastValue: Allows to get the first/last value from the Map.

Notes about Versions

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)

How to install

Using Gradle:

repositories {
    maven {
        url = "https://maven.speiger.com/repository/main"
    }
}
dependencies {
	compile 'de.speiger:Primitive-Collections:0.4.0'
}

Direct:

Version Jar Sources Java Doc
0.4.0 Download Download Download
0.3.6 Download Download Download
0.3.5 Download Download Download
0.3.4 Download Download Download
0.3.3 Download Download Download

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?

  • Variables and ClassNames are define here
  • Templates are stored here
  • Tests can be found here

Please if you want to contribute follow the Rule-Sheet. It keeps everything in line.

How to Build

The SourceCode can be generated via:
/gradlew.bat generateSource

to build the jar:
/gradlew.bat build
do not combine the commands because they can not be executed at the same time.

Current Down Sides (Random order)

  • Testing for Sub Maps/Sets/Lists are only in a very basic way tested
  • Documentation is only present at the lowest level for most cases and needs a typo fixing.