Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 韩文字符的排序和分组(不熟悉韩文)_Java_Sorting_Localization_Grouping - Fatal编程技术网

Java 韩文字符的排序和分组(不熟悉韩文)

Java 韩文字符的排序和分组(不熟悉韩文),java,sorting,localization,grouping,Java,Sorting,Localization,Grouping,我正在尝试用Java对韩语字符进行排序和分组 目前,我将使用 final Collator collator = Collator.getInstance(Locale.KOREA); Collections.sort(words, collator); 然而,我很难把它们分成元音组(ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ) 这应该不会太难,尽管我不确定以前是否已经这样做过 你要做的是取第一个Unicode字母。在Unicode中,所有的韩语字母都是按照维基百科中描述的公式组成的 因此,您可以使

我正在尝试用Java对韩语字符进行排序和分组

目前,我将使用

final Collator collator = Collator.getInstance(Locale.KOREA);
    Collections.sort(words, collator);

然而,我很难把它们分成元音组(ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ)

这应该不会太难,尽管我不确定以前是否已经这样做过

你要做的是取第一个Unicode字母。在Unicode中,所有的韩语字母都是按照维基百科中描述的公式组成的

因此,您可以使用公式对其进行分解:

(int)((54620 - 44032) / 588)
使用wikipedia文章中提到的密钥,您可以做类似的事情(我使用Groovy,因为它更简单,但我相信您可以将其应用于Java)

def words=['곰', '세', '마리','가', '한', '집에', '있어', '아빠', '곰', '엄마', '곰', '애기', '곰'], 
结果=[('ㄱ'):[],
('ㄲ'):[],
('ㄴ'):[],
('ㄷ'):[],
('ㄸ'):[],
('ㄹ'):[],
('ㅁ'):[],
('ㅂ'):[],
('ㅃ'):[],
('ㅅ'):[],
('ㅆ'):[],
('ㅇ'):[],
('ㅈ'):[],
('ㅉ'):[],
('ㅊ'):[],
('ㅋ'):[],
('ㅌ'):[],
('ㅍ'):[],
('ㅎ'):[],矩阵=[(0):'ㄱ',
(1):'ㄲ',
(2):'ㄴ',
(3):'ㄷ',
(4):'ㄸ',
(5):'ㄹ',
(6):'ㅁ',
(7):'ㅂ',
(8):'ㅃ',
(9):'ㅅ',
(10):'ㅆ',
(11):'ㅇ',
(12):'ㅈ',
(13):'ㅉ',
(14):'ㅊ',
(15):'ㅋ',
(16):'ㅌ',
(17):'ㅍ',
(18):'ㅎ']
for(大写){
def offset=(int)((字字符(0)-44032)/588)
def firstJamo=矩阵[偏移量]

结果[firstJamo]不,反正没有。我能想到的唯一方法是找到每个字符的十六进制范围并进行相应过滤。但是,这可能效率很低。我不知道如何阅读韩语,这就是为什么我希望这里会有韩语开发者!
def words = ['곰', '세', '마리','가', '한', '집에', '있어', '아빠', '곰', '엄마', '곰', '애기', '곰'], 
result = [('ㄱ'):[],
('ㄲ'):[],
('ㄴ'):[],
('ㄷ'):[],
('ㄸ'):[],
('ㄹ'):[],
('ㅁ'):[],
('ㅂ'):[],
('ㅃ'):[],
('ㅅ'):[],
('ㅆ'):[],
('ㅇ'):[],
('ㅈ'):[],
('ㅉ'):[],
('ㅊ'):[],
('ㅋ'):[],
('ㅌ'):[],
('ㅍ'):[],
('ㅎ'):[]], matrix = [(0):'ㄱ',
(1):'ㄲ',
(2):'ㄴ',
(3):'ㄷ',
(4):'ㄸ',
(5):'ㄹ',
(6):'ㅁ',
(7):'ㅂ',
(8):'ㅃ',
(9):'ㅅ',
(10):'ㅆ',
(11):'ㅇ',
(12):'ㅈ',
(13):'ㅉ',
(14):'ㅊ',
(15):'ㅋ',
(16):'ㅌ',
(17):'ㅍ',
(18):'ㅎ']

for (word in words) {
    def offset = (int)((word.charAt(0) - 44032) / 588)
    def firstJamo = matrix[offset]
    result[firstJamo] << word   
}

result