2015-10-09 3 views
0

У меня есть список карт с ключом (String) и Value (Object), необходимо сортировать список как сортировку EBCDIC, а не как сортировку java. Любой, кто знает какой-либо пользовательский код, уже существует, или любые указатели для запуска пользовательского кодирования сортировки в этом случае.Внедрение EBCDIC Сортировка в Java

+0

Что вы имеете в виду под "списком карты"? Это список, или это карта? Вы можете использовать «TreeMap» с пользовательским сопоставлением, после чего вам действительно нужно просто написать собственный сопоставитель - если ваш вопрос просто «Как сравнить строки с помощью EBCDIC вместо Java», это станет немного проще, или, по крайней мере, более четко определены. –

+0

Вы пробовали пользовательский компаратор, используя charset? может b это http://stackoverflow.com/questions/24525015/java-comparator-for-string-in-ebcdic-encoding может вам помочь. –

+0

@OAD я посмотрел на это, но понятия не имею, как реализовать. –

ответ

0

Вы можете преобразовать строки в байты в кодировке EBCDIC.

Обратите внимание, что байт имеет диапазон от -128 до 127. Символы выше 127 будут отрицательными, поэтому они не будут правильно сравнивать положительные байты. Чтобы обработать это преобразование байтов EBCDIC обратно в строки в Charset по умолчанию, а затем сравнить их.

Пример:

Charset ebcdicCharset = Charset.forName("IBM037"); 
Comparator<String> ebcdicComparator = (string1, string2) -> 
    new String(string1.getBytes(ebcdicCharset)) 
     .compareTo(new String(string2.getBytes(ebcdicCharset)));