将整理器与乌克兰语一起使用

时间:2018-10-15 19:17:35

标签: java collator

请查看我尝试实现整理器以对带有“标题”字段的对象进行排序的方法。 方法:

ggplot(df, aes(x, y)) +
  geom_point(aes(colour = z2))+
  scale_colour_gradientn(colours = c('springgreen1', 'springgreen4', 'yellowgreen','yellow2',
                                     'lightsalmon','orange','orange3','orange4','navajowhite3','white'),
                         breaks=c(0,1,2,3,4,5,6,7,8,9), 
                         limits = c(0,9)) +
theme(legend.key.height = unit(1.5, "cm"))

它排序,但不正确。字母“ i”放在开头。 怎么了?

2 个答案:

答案 0 :(得分:2)

我认为您应该使用super__<method>()

查看有关Internationalization的网站

编辑:

我认为问题在于乌克兰字母的表示方式。

https://en.wikipedia.org/wiki/Ukrainian_alphabet#Unicode

根据Wikipedia,考虑到Unicode,“ i”是最后一个字母。因此,也许您按降序而不是升序排序?

答案 1 :(得分:1)

正确的代码:

public List<SchoolSubject> findAllByOrderByTitle() {
    List<SchoolSubject> schoolSubjects = subjectRepository.findAllByOrderByTitle();

    Collator uaCollator = Collator.getInstance(new Locale("uk", "UA"));
    uaCollator.setStrength(Collator.PRIMARY);
    schoolSubjects.sort((s1, s2)->uaCollator.compare(s1.getTitle(), s2.getTitle()));
    return schoolSubjects;
}

使用新的Locale(“ uk”,“ UA”)修复,从lambda中排除了stream()并正确排序。