Java — компаратор по умолчанию для LevelDB

Я использую LevelDB с Java через JNI.

Я хочу предоставить числовой (целочисленный) ключ и иметь возможность повторять БД в порядке этого ключа. Мне трудно понять, как на самом деле работает компаратор по умолчанию для LevelDb, и как я буду кодировать int в byte[] это позволило бы компаратору по умолчанию правильно упорядочить int,

Документ LevelDb гласит:

В предыдущих примерах использовалась функция заказа по умолчанию для клавиши,
который заказывает байты лексикографически.

Я гуглил вокруг, но тупик для того, как я на самом деле закодировать int в лексикографически упорядоченные байты?

Примечание. Если я добавлю свой собственный компаратор, он примерно удваивает время итерации, поскольку теперь все сравнения должны перескакивать назад и вперед через границу JNI, поэтому я не хочу этого делать.

2

Решение

Эта кодировка работает:

public synchronized static byte[] encode(int key) {
encoded[0] = (byte)(key >> 24);
encoded[1] = (byte)(key >> 16);
encoded[2] = (byte)(key >> 8);
encoded[3] = (byte)(key);
return encoded;
}
0

Другие решения


По вопросам рекламы [email protected]