Skip to content

mawillers/multiindex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A Java container with dynamic indexes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages