java 高性能集合_Koloboke:高性能的Java集合

Koloboke

A family of projects around collections in Java (so far).

The Koloboke Collections API

68747470733a2f2f6d6176656e2d6261646765732e6865726f6b756170702e636f6d2f6d6176656e2d63656e7472616c2f636f6d2e6b6f6c6f626f6b652f6b6f6c6f626f6b652d6170692d6a646b382f62616467652e737667

A carefully designed extension of the Java Collections Framework with primitive specializations and more. Java 6+. Apache 2.0 license.

Compatibility with the Java Collections Framework

All primitive specialization collections extend basic interfaces (Collection, Set, Map), hence could be used as drop-in replacements of slow collections of boxed values

API for Java 6 and 7 is forward-compatible with all methods new in Java 8

68747470733a2f2f6d6176656e2d6261646765732e6865726f6b756170702e636f6d2f6d6176656e2d63656e7472616c2f636f6d2e6b6f6c6f626f6b652f6b6f6c6f626f6b652d636f6d70696c652f62616467652e737667

An annotation processor, generates implementations for collection-like abstract classes or interfaces. API agnostic, may be used to generate implementation for classes or interfaces, extending interfaces from the Koloboke Collections API, or, for example, interfaces from the Trove collections library. "Embeddable version" of the Koloboke implementation library.

Quick start

Add the following dependencies in your Maven pom.xml:

com.koloboke

koloboke-compile

0.5.1

provided

com.koloboke

koloboke-impl-common-jdk8

1.0.0

Or in your Gradle build script, you should first apply the propdeps Gradle plugin to enable provided dependencies, and then configure the dependencies block:

dependencies {

provided 'com.koloboke:koloboke-compile:0.5.1'

// `jdk6-7` instead of `jdk8` if you use Java 6 or 7

compile 'com.koloboke:koloboke-impl-common-jdk8:1.0.0'

}

68747470733a2f2f6d6176656e2d6261646765732e6865726f6b756170702e636f6d2f6d6176656e2d63656e7472616c2f636f6d2e6b6f6c6f626f6b652f6b6f6c6f626f6b652d696d706c2d6a646b382f62616467652e737667

An efficient implementation of the Koloboke Collections API.

Compatibility with the Java Collections Framework

Fail-fast semantics everywhere

null keys are (optionally) supported, just like in java.util.HashMap

Float.NaN and Double.NaN keys are treated consistently with boxed version (all NaNs are considered equal)

Quick start

Add the following dependencies in your Maven pom.xml:

com.koloboke

koloboke-api-jdk8

1.0.0

com.koloboke

koloboke-impl-jdk8

1.0.0

runtime

Or to your Gradle build script:

dependencies {

// `jdk6-7` instead of `jdk8` if you use Java 7 or older

compile 'com.koloboke:koloboke-api-jdk8:1.0.0'

runtime 'com.koloboke:koloboke-impl-jdk8:1.0.0'

}

Or similarly for your favourite build system.

Then you can start using collections. Replace all lines like

Map map = new HashMap<>();

with

Map map = HashIntIntMaps.newMutableMap();

Contributing, Feedback & Support

Use issues or ask a question on StackOverflow.

How to build and develop

Gradle build requires Java 8 compiler, set JAVA_HOME environment variable to the JDK 8 location. Next to your JDK 8 location (i. e. a jdk1.8 directory), JDK 9 installation has to be present in a jdk-9 directory. For meta projects development, JDK 6 and JDK 7 also have to be present in jdk1.6 and jdk1.7 directories sibling to the jdk1.8 directory.

Then

$ git clone git@github.com:leventov/Koloboke.git

$ cd Koloboke

$ ./gradlew :buildMeta

$ ./gradlew buildMain -x test -x findbugsMain -x findbugsTest

$ ./gradlew idea

Then you can open the project in IntelliJ IDEA.

To rebuild meta projects (code generators), run from the project root dir:

$ ./gradlew :cleanMeta :buildMeta

To rebuild either the lib, benchmarks or both, run

$ ./gradlew cleanMain buildMain

from the lib, benchmarks subdir or the root project dir respectively.

To build the lib for Java 8, run

$ ../gradlew cleanMain buildMain -PlibTargetJava=8

from the lib subdir.

If you want to generate proper Javadocs, especially for Java 6 or 7, you should specify javadocExecutable and jdkSrc build properties (see Gradle docs for how to do that). Typical javadocExecutable value is JAVA_HOME/bin/javadoc[.exe], jdkSrc should point to a directory which contain uncompressed JDK sources, i. e. package structure starting from java, javax, sun, etc. subdirs.

Project name history

Trove (This project was started as a Trove fork, but has nothing in common with Trove for already very long time.)

UntitledCollectionsProject, UCP

Higher Frequency Trading Collections, OpenHFT Collections, HFT Collections, HFTC

Koloboke (Collections) -- current name!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值