Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сравнение объектов / 2 сообщений из 2, страница 1 из 1
24.11.2015, 13:38
    #39112059
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение объектов
Возник вопрос по сравнию строк
http://www.sql.ru/forum/1185931/elasticsearch-sortirovka

Имеется строки ввида

NNN_XXX_LLL1_LLL2

Где
NNN - число от 1 до 100000
XXX - буквы и цифры
LLL1 - long
LLL2 - long

Надо это строчки соортировать снчало по NNN в ржиме возрастания потом по XXX и далее по LLL1

Решил создать bean из этих четерых типов и сравнивать по очереди
Пробелма в том, что в ExecutableScript в ElasticSearch

метод run() должен возвращать Object.

Как можно отсортировать строки (вернуть какое-то определенное значение), чтоб соблюдалось улсовие
...
Рейтинг: 0 / 0
24.11.2015, 14:41
    #39112169
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение объектов
Решил через

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
  public static byte[] intToBytes(final int integer) {
    byte[] result = new byte[4];

    result[0] = (byte)((integer & 0xFF000000) >> 24);
    result[1] = (byte)((integer & 0x00FF0000) >> 16);
    result[2] = (byte)((integer & 0x0000FF00) >> 8);
    result[3] = (byte)(integer & 0x000000FF);

    return result;
  }

  public static byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
  }

  public static String hexEncode(byte[] aInput) {
    StringBuilder result = new StringBuilder();
    char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    for (int idx = 0; idx < aInput.length; ++idx) {
      byte b = aInput[idx];
      result.append(digits[(b & 0xf0) >> 4]);
      result.append(digits[b & 0x0f]);
    }
    return result.toString();
  }




И в самом бине

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  public String getHexEncode() {
    // StringBuilder sb = new StringBuilder().append("\"").append(getFirstPart()).append("\"_\"")
    // .append(getSecondPart()).append("\"_\"").append(String.valueOf(getsUpdateDate())).append("\"_\"")
    // .append(String.valueOf(getsUpdateDate())).append("\"");

    StringBuilder hash = new StringBuilder();
    hash.append(Utils.hexEncode(Utils.intToBytes(getFirstPart())));
    hash.append(Utils.hexEncode(getSecondPart().getBytes()));
    hash.append(Utils.hexEncode(Utils.longToBytes(getsIssueDate())));
    hash.append(Utils.hexEncode(Utils.longToBytes(getsUpdateDate())));
    return hash.toString();
  }



Сортирует как надо, может у кого есть другие предложения?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сравнение объектов / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]