fastutil extends the Java™ Collections Framework by providing type-specific maps, sets, lists and queues.
Go to file
Maximilian Kratz f2d4f18fd4
Merge pull request #3 from maxkratz/feature/update-github-actions
Updates GitHub-based Actions to v4 + updates Ubuntu release to 22.04
2023-12-19 09:07:47 +01:00
.github/workflows Updates GitHub-based Actions to v4 + updates Ubuntu release to 22.04 2023-12-19 09:02:07 +01:00
.settings Tweaking 2023-02-24 09:46:45 +00:00
bnd Restructured generation and POMs 2021-03-21 22:43:13 +00:00
drv efficient removeIf for ArrayList 2023-07-18 22:25:27 +03:00
guava/it/unimi/dsi/fastutil Fixes 2022-02-10 12:42:42 +01:00
lib Removed old bnd 2021-03-21 23:44:13 +01:00
src Entry.setValue() now works for all map iterators and iterator-like methods; bumped dates 2023-02-23 14:19:53 +00:00
test/it/unimi/dsi/fastutil Add listIterator tests 2023-03-13 22:23:47 +02:00
.gitignore A very long-standing bug in linked hash containers has been fixed 2022-12-09 09:47:32 +00:00
.svnignore Tweaking 2006-03-22 23:40:11 +00:00
build.properties Bumped version 2023-03-13 10:53:03 +00:00
build.xml POM signing 2023-03-07 21:13:00 +01:00
CHANGES Comment 2023-07-19 09:43:33 +02:00
fastutil-core.bnd New bind files 2021-03-12 15:21:04 +00:00
fastutil.bnd Fixed broken export clause 2021-09-07 16:49:49 +02:00
find-deps.sh Updated docs 2021-03-29 09:14:59 +01:00
gencsource.sh Last fixes, bumped version 2022-02-10 17:25:40 +00:00
ivy.xml Tweaking 2015-01-13 15:04:25 +00:00
LICENSE-2.0 Moved to Apache License 2.0 2010-11-18 19:27:26 +00:00
makefile Added junit ant target to binary makefile target 2022-10-02 11:37:54 +02:00
pom-core-model.xml Tweaking 2022-02-10 14:45:44 +01:00
pom-model.xml Tweaking 2022-02-10 14:45:44 +01:00
README.md Tweaking 2022-02-10 14:45:44 +01:00
REVISION.md Major code cleanup, phase four 2017-03-16 00:42:36 +01:00
split.sh New tentative layout 2021-08-04 15:01:20 +02:00
test.sh Removed test 2021-03-27 14:44:45 +01:00
TODO Tweaking 2022-02-12 18:51:55 +00:00

Welcome to fastutil

fastutil extends the Java Collections Framework by providing type-specific maps, sets, lists, and queues with a small memory footprint and fast access and insertion; it provides also big (64-bit) arrays, sets, and lists, sorting algorithms, fast, practical I/O classes for binary and text files, and facilities for memory mapping large files.

Since version 8.5.5, fastutil is split into two jars for convenience:

  • fastutil-core.jar contains data structures based on integers, longs, doubles, and objects;

  • fastutil.jar is the classic distribution, containing all classes.

Note that core classes are duplicated in the standard jar, so if you are depending on both (for example, because of transitive dependencies) you should exclude the core jar.

Previous split versions would provide different classes in different jars, but managing sensibly dependencies turned out to be impossible.

You can also create a small, customized fastutil jar (which you can put in your repo, local maven repo, etc.) using the find-deps.sh shell script. It has mild prerequisites, as only the jdeps tool is required (bundled with JDK 8). It can be used to identify all fastutil classes your project uses and build a minimized jar only containing the necessary classes.

Building

First, you have to make sources to get the actual Java sources. After that, ant jar will generate a single jar file; ant javadoc will generate the API documentation; ant junit will run the unit tests.

If you want to obtain the three jars above, you have to run the script split.sh, and then ant osgi-rest.

The Java sources are generated using a C preprocessor. The gencsource.sh script reads in a driver file, that is, a Java source that uses some preprocessor-defined symbols and some conditional compilation, and produces a (fake) C source, which includes the driver code and some definitions that customize the environment.