Updated License & Readme

Speiger 2 years ago
parent f60a287868
commit 2804aafd22

@ -1,6 +1,6 @@
Apache License
Version 2.0, January 2004
Version 2.0, January 2021
http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
@ -187,7 +187,7 @@ a file or class name and description of purpose be included on the same "printed
page" as the copyright notice for easier identification within third-party
Copyright [yyyy] [name of copyright owner]
Copyright 2021 Speiger
Licensed under the Apache License, Version 2.0 (the "License");

@ -1,32 +1,22 @@
# Primitive-Collections (To be Renamed)
This is a Simple Primitive Collections Library i started as a hobby Project.
It's basis is of FastUtil and Java's Collection Library
But both lib's have a lot of problems, and in FastUtils case foundation seem changes to be no longer possible.
So this project was started.
With a Rule-Sheet, and also hopefully more Test-Coverage.
It is based on Java's Collection Library and FastUtil.
But its focus is a different one.
Currently Cons against FastUtil (will/might change over time).
- No Maps, this is next on the todolist.
- No Singletons,
- No BigLists/Sets/Maps
- No Custom Spliterator support.
- No Reference Collections.
- Some implementations are slower due to not including all Micro-optimizations (this might not change)
- Not as Specific Case Testing compared to FastUtil
- No Java Serialization implemented
- Code Generator is right now not finalized and no automatic setup exists as of this moment.
Main Features:
ArraysList, HashSet/Map (Linked & HashControl), TreeSet/Map (RB & AVL), Priority Queue.
Pros against FastUtil
- A Cleaner implementation of Collections that do exists: NavigableSet (Exists), PriorityQueues are Save-able outside of java Serialization and a lot of others.
- More Consistency with features, not leaving a lot of holes in implementations. (Anything outside of HashMaps/Lists have massive holes)
- Abstract Tests to allow more coverage on tests and allow quicker implementation on tests on new Implementations.
- A lot better packaging where each types have their own packages to also make it easier to use the library. (lists/sets/collections/queues/utils)
- Due to package name choice: This Library imports do not overshadow java imports. (Anything after s is overshadowed)
- No Linux Environment necessary to generate the sourcecode if you want to work on it. All done with Java and or Gradle.
- A lot of extra functions that become useful in some cases, like: ITrimmable, IArray, extractElements(from, to), moveToFirst/Last, PriorityQueue iterator. Better Synchronization wrappers that expose useful interfaces.
- More Control how internals work thanks to SanityChecks
- Support to some extend of a Java Specific Feature: Non-TypeSepcific Collection Non Delete functions. (any method that used Object as Parameter instead of Generic)
# Guide
This Library also includes my own MergeSort Algorithm that does not need to duplicate the input array.
It is a bit slower depending on the size, but is a stable sort that does not require to duplicate an array
Project is currently not buildable due to certain design flaws that are being redone,
but the SourceCode can be already generated via: /gradlew.bat generateSource
which will generate all the files and they shouldn't generate any errors.
Current Problem:
EnumMaps use sun.misc package.
Some methods are ambiguous and need to be adjusted.
Some overhauls or missing implementations have to be added. (A couple passes)
But technically Lists/Sets/PriorityQueues are fully usable, Maps are untested and just recently added.
Documentation & Tests are going to be added very soon.