Multi-Index-Container

A Java container with dynamic indexes

License

License

Categories

Categories

Dex General Purpose Libraries Utility
GroupId

GroupId

com.github.mawillers
ArtifactId

ArtifactId

multiindex
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

Multi-Index-Container
A Java container with dynamic indexes
Project URL

Project URL

https://github.com/mawillers/multiindex
Source Code Management

Source Code Management

https://github.com/mawillers/multiindex.git

Download multiindex

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.mawillers/multiindex/ -->
<dependency>
    <groupId>com.github.mawillers</groupId>
    <artifactId>multiindex</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.mawillers/multiindex/
implementation 'com.github.mawillers:multiindex:1.0.0'
// https://jarcasting.com/artifacts/com.github.mawillers/multiindex/
implementation ("com.github.mawillers:multiindex:1.0.0")
'com.github.mawillers:multiindex:jar:1.0.0'
<dependency org="com.github.mawillers" name="multiindex" rev="1.0.0">
  <artifact name="multiindex" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.mawillers', module='multiindex', version='1.0.0')
)
libraryDependencies += "com.github.mawillers" % "multiindex" % "1.0.0"
[com.github.mawillers/multiindex "1.0.0"]

Dependencies

compile (1)

Group / Artifact Type Version
com.google.guava : guava jar 21.0

test (3)

Group / Artifact Type Version
junit : junit jar 4.12
org.hamcrest : hamcrest-library jar 1.3
com.github.npathai : hamcrest-optional jar 1.0

Project Modules

There are no modules declared in this project.

Multi-Index-Container

A container class with dynamic indexes. Use this class instead of combining eg. an ArrayList (for iteration in defined order) with a HashMap (for quick lookup via some key).

Getting started

Create an instance of MultiIndexContainer and create the indexes you require. Then, put and retrieve data via any of those indexes.

MultiIndexContainer<Employee> container = MultiIndexContainer.create();
SequentialIndex<Employee> bySequence = container.createSequentialIndex();
UniqueIndex<Integer, Employee> byId = container.createHashedUniqueIndex(e -> e.getId());

bySequence.add(new Employee("Jones", 1, "London"));
bySequence.add(new Employee("Miller", 2, "New York"));
bySequence.add(new Employee("Smith", 3, "Berlin"));
bySequence.add(new Employee("Miller", 4, "Bournemouth"));
[...]
boolean wasAdded = bySequence.add(new Employee("Jones", 2, "Austin"));
Assert.isFalse(wasAdded, "Adding this employee violates the uniqueness constraint of byId index");

Optional<Employee> e = byId.getOptional(3);
if (e.isPresent())
    ...

Prerequisites

This software requires Java 8 and Guava.

Installing

To add a dependency using Maven, use the following:

<dependency>
    <groupId>com.github.mawillers</groupId>
    <artifactId>multiindex</artifactId>
    <version>1.0.0</version>
</dependency>

Running the tests

Run mvn test for compiling the code and running all unit tests.

Built with

  • Maven - Dependency Management
  • Hamcrest - Expressive matchers for JUnit
  • Guava - Generic tools

Versioning

We use SemVer for versioning.

Authors

  • Martin Willers - Design and implementation

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

Versions

Version
1.0.0