使用 Collator 对整数列表进行排序

问题描述 投票:0回答:1

我们使用以下简化的代码进行排序。

    Collator collator = Collator.getInstance(Locale.GERMAN);
    collator.setStrength(Collator.SECONDARY);
    return Comparator.comparing(entity -> {
        try {
            // Custom stuff here...
            // Values processed here cn be either String, Integer, Boolean or Date
            return (Comparable)sortFieldValue;
        } catch (Exception e) {
            throw new RuntimeException();
        }
    }, collator);

这对于

String
值来说效果很好。然而,我们想重用它来比较
Boolean
Integer
等。使用给定的整理器,结果是:

java.lang.Integer cannot be cast to java.lang.String

删除排序器时,排序也适用于除

String
以外的数据类型,但例如德语元音变音未按预期排序。

对于基于字符串的值使用整理器“组合”并忽略其他数据类型的适当方法是什么?

java sorting java-8 comparator collator
1个回答
0
投票

我们所做的是检查正在比较的实体的类型,并且仅在两个值实际上都是字符串时才使用排序器(通过 collator.compare(..))。

© www.soinside.com 2019 - 2024. All rights reserved.