org.cicirello.core

Overview

The Java module org.cicirello.core provides some of the core utilities and data structures used in several of our other libraries and projects, including but not limited to Chips-n-Salsa and JavaPermutationTools, as well as various applications that use those libraries. Among the data structures included in this library are various priority queue implementations, such as binary heaps and Fibonacci heaps. The priority queues within org.cicirello.core support operations that the Java API's built-in PriorityQueue class does not, such as changing priority values, merging priority queues, among others. The org.cicirello.core library defines a common interface for its priority queue implementations, enabling easily switching between a binary heap or a Fibonacci heap. Other data structures and utilities contained in org.cicirello.core include: disjoint set forests, sorting networks, partially-filled arrays of ints and doubles (e.g., the equivalent of Java's ArrayList class, but for primitive int and double values), among others.

The source code repository is hosted on GitHub; and is licensed under the GNU General Public License Version 3 (GPLv3). The API documentation is found on this site. The module is regularly published to Maven Central, from which it is easily imported into software projects using Maven and other commonly used build tools.

The org.cicirello.core module originated as part of the research of Vincent A. Cicirello.

Dependent Libraries

The following libraries depend upon org.cicirello.core.

Importing from Maven Central

Latest release on Maven Central

To import org.cicirello.core from the Maven Central repository (if your build tool is Maven), add the following to the dependencies section of your “pom.xml” (for other build tools, see your build tool's documentation for the equivalent):

<dependency>
  <groupId>org.cicirello</groupId>
  <artifactId>core</artifactId>
  <version>x.y.z</version>
</dependency>

Just replace x.y.z with your desired version of the library.

Java Modules

To use the org.cicirello.core module in your project, add the following to your module-info.java:


module your.module.name.here {
	requires org.cicirello.core;
}

Semantic Versioning

We use Semantic Versioning with version numbers of the form: MAJOR.MINOR.PATCH, where differences in MAJOR correspond to incompatible API changes, differences in MINOR correspond to introduction of backwards compatible new functionality, and PATCH corresponds to backwards compatible bug fixes.

Development Process

To maintain a high quality library, our development process utilizes the following: