Я искал ответы, и они подходят для стандартного алфавита. а у меня другая ситуация.
Итак, я программирую на Java. Я пишу определенную программу. эта программа имеет в каком-то месте некоторый список строковых элементов. Я хотел бы отсортировать эти строковые элементы в соответствии с алфавитом.
если бы я отсортировал его по английскому алфавиту, это было бы легко, так как обычно все кодовые страницы совместимы с американским стандартным кодом для обмена информацией (ASCII), и в них уже отсортированы все буквы английского алфавита, поэтому, если я хочу отсортировать мой список, мне нужно было бы только сравнить значения символов, чтобы определить, какая буква куда идет.
но моя проблема в том, что я не хочу сортировать список с помощью английского алфавита. моя программа имеет возможность отображения на английском или некоторых других языках. проблема в том, что некоторые из этих языков имеют алфавит, отличный от английского алфавита, поэтому буквы не совпадают с буквами в английском алфавите, и поэтому просто ‹, и > проверка значений char не работает, потому что буквы неправильно сортируются в кодовая страница.
для целей этого вопроса скажем, что английский алфавит выглядит следующим образом:
a,
b,
c,
d,
e,
f,
g.
скажем, есть некая страна под названием «ABC», чей алфавит выглядит так:
d,
b,
g,
e,
a,
c,
f.
прежде всего, если a равно 97 на кодовой странице, b 98, c 99 и так далее, как я могу отсортировать свой список, используя второй алфавит в этом примере, поскольку во втором алфавите первая буква равна 100, вторая равна до 98, третий до 103 и так далее?
и мой второй вопрос: к сожалению, в некоторых странах, которые я переводю, моя программа тоже имеет алфавит, где некоторые комбинации букв рассматриваются как одна буква. для моего второго примера предположим, что страна «def» имеет следующий алфавит:
d,
g,
be,
e,
fe,
c,
f.
здесь: д - первая буква в алфавите, г - вторая буква в алфавите, бэ - третья буква в алфавите (ОДНА буква, хотя и пишется как две буквы, но считается именно одной буквой, и имеет свою положение в алфавите), e - четвертая буква в алфавите, the - пятая буква в алфавите (также пишется как две буквы, но трактуется как ОДНА буква), c - шестая буква в алфавите, f - седьмая буква в алфавите .
как вы можете видеть в этом воображаемом примере номер 2 воображаемой страны "def", эта страна действительно испортила алфавит. и после представления этих двух примеров этих двух алфавитов двух воображаемых стран вы понимаете, почему я не могу использовать стандартный метод сортировки строк.
Итак, не могли бы вы помочь мне с этой сортировкой. Я не уверен, что я могу сделать, чтобы отсортировать по этому испорченному алфавиту.
post scriptum: строки ниже не важны для вопроса, но они просто дополнительная информация, если кто-то хочет знать, где я нашел такой испорченный алфавит
Ну, я привел те примеры, которые состоят из 7 случайно упорядоченных букв только для целей этого вопроса - чтобы сделать его более простым. если вам интересно, в чем моя настоящая проблема - я пытаюсь перевести свою программу на хорватский. Хорватский алфавит действительно испорчен, потому что он выглядит следующим образом:
1 |a
2 |b
3 |c
4 |č
5 |ć
6 |d
7 |đ
8 |đž
9 |e
10|f
11|g
12|h
13|i
14|j
15|k
16|l
17|lj
18|m
19|n
20|nj
21|o
22|p
23|r
24|s
25|š
26|t
27|u
28|v
29|z
30|ž
как видите, хорватский алфавит чем-то похож на английский алфавит, но большинство букв находятся не в том же месте, что и английские, а некоторые из них вообще не существуют в английском алфавите, а несколько букв представляют собой одну букву, которая пишется двумя буквами. так действительно трудно сортировать. поэтому я надеюсь, что кто-то знает какой-то способ сделать это. конечно, есть самый глупый метод для сортировки, который всегда будет работать и может сортировать что угодно, и это метод с оператором switch, где я сравниваю два элемента строки, и для каждой буквы я использую оператор switch, где оператор switch имеет 31+default= 32 корпуса, из которых каждый имеет свой переключатель с 32 корпусами. что в общей сложности 1024 случая, и если мой средний случай имеет 4 строки кода, я получаю, что если я хочу сортировать строки с использованием неанглийского алфавита, мой метод сортировки будет иметь длину не менее 4096 строк. и это огромный метод. это самый глупый способ сортировки, но только один я могу понять на данный момент. поэтому я спрашиваю здесь, потому что надеюсь, что кто-то знает какой-нибудь более простой способ сделать это. метод, который не так велик, как 4k строк кода, просто для сортировки глупых строк. У меня есть метод сортировки английских строк, и он занимает чуть больше 10 строк кода. Я надеюсь, что кто-то может предложить мне что-то меньше, чем 4k строк кода.
так что, если кто-нибудь знает более простое решение, я был бы признателен.
спасибо
Locale
, чем с версиями без орграфа (неправильными?). - person Tom Blodget   schedule 19.12.2016